بعد از اینکه داشتم بطور کلی نا امید میشدم (چه از خودم چه از بازی smc
)، بالاخره تونستم بازی اش رو راه بندازم. توی فروم سایت سازنده، بالاخره جایی پیدا شده بود که مشخص شد، برای بعضیها (از جمله من) بازی smc با کتابخونه libdevil نمیتونه کار کنه. البته اونجا توضیحات جزء به جزء نگفته بود. من اینجا توضیحات لازم رو میدم امیدوارم راهنمایی باشه واسه ی بقیه کسانی که مثل من به مشکل برخوردند. به شیوه ادبی می نویسم چون اینطوری واسه سرچ بهتره
- - - - - - - - - - - - - - - - - - - -
+ مشکل: بازی چه از روی بسته deb و چه از روی کامپایل کردن سورس، به هیچ وجه اجرا نمی شود و اگر در ترمینال دستور smc را بنویسیم، بعد از یک وقفه کوتاه، با خطای زیر مواجه می شوید:
Segmentation fault
- - - - - - - - - - - - - - - - - - - -
+ راه حل: خطای Segment fault (یا segfault) به دلایل زیادی می تواند رخ دهد، راه حلی که در اینجا ارائه می شود، ممکن است جوابگوی مشکل شما نباشد (ولی قاعدتا باید باشه!).
دلیل بروز این مشکل در بسته deb کتابخانه CEGUI می باشد. البته این به معنی خراب بودن کتابخانه CEGUI و بسته deb آن نیست. بلکه به معنای آن است که کتابخانه CEGUI بطور مناسبی برای اجرای بازی smc روی سیستم شما تنظیم نشده است و باید تنظیمات CEGUI را تغییر دهید. تنظیمی که باید تغییر دهید مربوط به قسمت کار با تصاویر است. کتابخانه CEGUI تنها از یکی از کتابخانه های زیر برای کار با تصاویر می تواند استفاده کند:
Devil
FreeImage
SILLY
و ...
بطور پیش فرض بسته deb ای که از سایت های مختلف دانلود میکنید، طوری تنظیم شده اند تا کتابخانه CEGUI از کتابخانه Devil بعنوان image codec استفاده کند و مشکل در اینجاست که بازی smc برای بعضی ها (مثل من) نمیتواند به این طریق اجرا شود و خطای segfault را میدهد. حالا به چه دلیل، من هم نمیدانم. پس ما مجبور هستیم که کاری کنیم تا کتابخانه CEGUI از کتابخانه دیگری استفاده کند مثلا FreeImage.
من همین کار را کردم و بازی smc بدون مشکل اجرا شد. برای تنظیم کردن CEGUI (تا از FreeImage بجای Devil برای image codec استفاده کند) باید سورس کتابخانه CEGUI را دانلود کرده و شروع به کامپایل از روی سورس کنید
ابتدا سورس CEGUI را دانلود میکنیم، برای smc 1.5 از CEGUI 0.5.0 RC2 استفاده میکنیم، پس این نگارش CEGUI را از اینجا دانلود کنید:
http://dfn.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-0.5.0-RC2.tar.gzحال، باید سورس بازی smc را دانلود نمائید. از اینجا:
http://downloads.sourceforge.net/smclone/smc-1.5.tar.bz2?downloadپس از اینکه اینها را دانلود کردید. باید بسته libfreeimage-dev را نیز نصب شده داشته باشید، برای نصب آن:
sudo apt-get install libfreeimage-dev
بسته فوق، همان کتابخانه FreeImage است که حاوی فایلهای header بوده و CEGUI میتواند از آن استفاده کند (یادآوری: بطور پیش فرض CEGUI از کتابخانه Devil استفاده میکند نه FreeImage)
حال فایل CEGUI-0.5.0-RC2.tar.gz را از حالت فشرده خارج کنید. به داخل پوشه آن رفته و با دستورات زیر آنرا نصب کنید:
./configure --with-default-image-codec=FreeImageImageCodec
make
sudo make install
سپس باید بازی smc را نصب کنید:
./autoreconf -iv
make
sudo make install
و در آخر اجرای بازی:
smc
همانطور که متوجه شدید، بازی بدون موسیقی است، باید موسیقی ها را از اینترنت دانلود کرده و در اختیار بازی قرار دهید. اگر لازم داشتید این لینک دانلود سایت سازنده است:
http://www.secretmaryo.org/index.php?page=game_downloads&sid=?sid=- - - - - - - - - - - - - - - - - - - -
+ مشکلات احتمالی (شاید برای شما هم مثل من پیش بیاد):
1) ممکن است وقتی که میخواهید CEGUI را کامپایل کنید، به مشکل path و غیره بر بخورید. شاید هم نه! بطور مثال اگر به مشکل path برخورد کردید (منظورم از مشکل path این است که مثلا بازی smc نتواند فایلهای header از CEGUI را پیدا کند)، اگر به این نوع مشکلات برخوردید، باید ابتدا CEGUI رو حذف کرده و فایلهای کامپایل شده را پاک کنید و دوباره CEGUI را برای کامپایل بعدی config یا تنظیم کنید، سپس دوباره آن را کامپایل و نصب نمائید، بطور مثال: (دایرکتوری فعلی، همان دایرکتوری سورس CEGUI است)
sudo make uninstall
make clean
./configure --with-default-image-codec=FreeImageImageCodec --includedir=/usr/include --libdir=/usr/lib
make
sudo make install
همچنین بعد از کارهای فوق، دوباره باید smc را از اول پاک و نصب نمایئد.
2) اگر در حین make کردن به مشکلی از طرف کتابخانه xerces برخورد کردید، میتوانید آن را disable کرده و یک XML Parser دیگری را بجای آن برای CEGUI بطور پیش گریده در نظر بگیرید که من از libxml استفاده کردم، برای این منظور، مثل همان کدهای فوق هست با این تفاوت که به شکل زیر باید config بشه:
./configure --with-default-image-codec=FreeImageImageCodec --includedir=/usr/include --libdir=/usr/lib --disable-xerces-c --with-default-xml-parser=LibxmlParser