Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> برنامه نويسي تخصصي DirectX و اصول برنامه نويسي تحت ويندوز -> كمك در زبان اسكريپت lua
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه 1, 2, 3, 4, 5  بعدي

كمك در زبان اسكريپت lua
نويسنده
پيغام
razielsina
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 5 شنبه 8 تير 1385
تعداد ارسالها: 326
محل سكونت: ايران


4 شنبه 26 تير 1392 - 12:19
پاسخ بصورت نقل قول
سلام بر دوستان عزيز.
در مورد اسكريپت لوا يه كمك ميخواستم از دوستان قديمي و كاربران تازه كسي هست كه با لوا در حد حرفه اي كار كرده باشه.
بحث پيچيده اي هم نيست ولي كمي سر درگمم كرده. بحث انتقال اشياء به ساختار زبان و برگشت اوناست كه البته با كمك كتابخانه انجام دادم ولي كسي با متا تيبلها انجام داده؟
كسي كاركرده يه ندا بده كه خير داره.

_________________
اهورا مزدا اين سرزمين مقدس را از هر گونه دشمن و خشكسالي به دور نگه دارد.
همانا از اسب افتاده ايم نه از اصل(مهدي اخوان ثالث)
www.sina-kian.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
razielsina
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 5 شنبه 8 تير 1385
تعداد ارسالها: 326
محل سكونت: ايران


5 شنبه 27 تير 1392 - 03:48
پاسخ بصورت نقل قول
مثل اينكه مثل قديما نيروي متخصص تو سايت نيستا! اين خيلي بده كه. پس دوستان دارن چيكار ميكنن!!!

_________________
اهورا مزدا اين سرزمين مقدس را از هر گونه دشمن و خشكسالي به دور نگه دارد.
همانا از اسب افتاده ايم نه از اصل(مهدي اخوان ثالث)
www.sina-kian.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


5 شنبه 27 تير 1392 - 04:37
پاسخ بصورت نقل قول
razielsina, سلام. داداش اینجا که Stackoverflow نیست ملت مثل نینجا ها بریزن!

توصیه من برای ارتباط دادن اشیاء ++C با Lua فقط کتایخونه هایی مثل LuaBind هست. این آدرس رو ببین، کتابخونه های معروف برای bind کردن توسط lua رو یه بررسی کرده:

http://realmensch.org/blog/fun-lua-bindings

راستی اگه با کامپایل کردن LuaBind مشکل داشتی از آدرس زیر استفاده کن. اینجا binary های LuaBind رو برای MSVC 2010 و MSVC 2012 بصورت 32 بیتی و 64 بیتی برای ویندوز قرار داده:

http://blog.nuclex-games.com/tutorials/cxx/luabind-introduction

حالت عادی LuaBind باید با boost و bjam کامپایل بشه که ظاهرا خیلی ها باهاش مشکل دارن.

اگه با metatable ها میخوای انجام بدی از نظر من یکم سردرگم میشی، ولی واقعا دستت رو باز میذاره تازه خیلی هم ساده هست اما برای هر کلاست باید یه interface هم برای lua درست کنی. این لینک ها رو هم نمیدونم دیدی یا نه:

http://lua-users.org/wiki/CppObjectBinding
و
http://lua-users.org/wiki/DoItYourselfCppBinding

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


جمعه 28 تير 1392 - 01:30
پاسخ بصورت نقل قول
razielsina, حالا خودت نمیای جواب بدی صحبت کنیم. اَه.

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
razielsina
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 5 شنبه 8 تير 1385
تعداد ارسالها: 326
محل سكونت: ايران


1 شنبه 30 تير 1392 - 23:57
پاسخ بصورت نقل قول
چاکر ماهان جان.
مانیتورم سوخته بود دسترسی نداشتم.
در مورد لوا بایند اطلاعات دارم منتها همیشه از اضافه کردن کتابخونه های جانبی بیزارم چون هزار دردو مرض به پروژه اضافه میکنن.
الان من با استفاده از نسخه 5.2 و ایجاد کردن یک محیط کتابخانه ای برای یکپارچه کردن توابع تونستم تو لوا اشیاء رو ایجاد و تغییراتی در اونها ایجاد کنم منتهای قضیه اینه که چنین عملی رو ندارم.
object=camera.create
object.setpos(0,0,0)
یعنی در واقع نمیتونم متدهایی به شئ ایجاد شده اختصاص بدم. که در واقع الان این رو انجام دادم.
object=camera.create
camera.setpos(object,0,0,0)
در واقع شئ object متدهایی با خودش نداره.
حالا بعد از مدتی رسیدم به مباحث اسکریپت نویسی برای انجین. انجینی که دارم طراحی میکنم از نسخه 9 و 11 پشتیبانی میکنه و تقریباً 70 درصدش انجام شده.
راستی در مورد اینکه مثلاً من بخوام 3 تا اسکریپت رو بارگزاری و اجرا کنم چیزی میدونی؟

_________________
اهورا مزدا اين سرزمين مقدس را از هر گونه دشمن و خشكسالي به دور نگه دارد.
همانا از اسب افتاده ايم نه از اصل(مهدي اخوان ثالث)
www.sina-kian.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


2 شنبه 31 تير 1392 - 04:39
پاسخ بصورت نقل قول
razielsina, سلام. من الآن نزدیک به چند ماهی هست که دارم با lua کار میکنم و اطلاعات زیادی ازش کسب کردم. در مورد اضافه نکردن کتابخونه خودت میدونی ولی از نظر من سریع ترین و آسون ترین راهه. البته LuaBind حدود 200 کیلوبایت هم به خروجیت اضافه میکنه. در مورد اینکه توی lua آبجکت های cpp درست کنی توی اینترنت خیلی مقاله هست. این لینک رو هم چک کن، با استفاده از luna که فقط یه فایل هدر و هیچ کتابخونه ای نیاز نداره کار میکنه.

http://lua-users.org/wiki/SimplerCppBinding

حالا نمیدونم الآن میخوای از زبون های اسکریپتی آماده استفاده کنی یا نه ولی اگه خواستی اینکار رو کنی من بهت squirrel رو پیشنهاد میکنم. یه کتابخونه به اسم sqrat هم داره که تمام کارهای کلاس بندی رو برات انجام میده. تازه خود squirrel قابلیت نوشتن کلاس و ایجاد constant تو خود زبون رو داره در حالی که lua هیچکدوم رو نداره و اینکه syntax زبون squirrel شبیح به C هست که خودش کلی آدم رو شادروان میکنه و از همه بهتر interface کتابخونه مثل lua نوشته شده. این کتابخونه رو یکی از developer های lua توی far cry 2 نوشته.

برای اجراء کردن اسکریپت های مختلف مسلما باید یه کلاس script بنویسی. کافیه برای هر اسکریپتی که میخوای اجراء کنی بیای یه نمونه از کلاس درست کنی و بعد لودش کنی. lua_loadfile همچین کاری رو میکنه. بعد میتونی توی loop اصلی هر دفعه بیای با lua_pcall خود اسکریت رو صدا بزنی که اجراء بشه یا اینکه بیای قبلش با lua_getglobal یه function رو بگیری و اونوقت با lua_pcall صداش بزنی. اینطوری میتونی یه function داشته باشی مثلا به اسم update توی اسکریپت هات که توی هر فریم صدا زده بشه. مثل یه event میشه. ولی در کل باید یه vector از این کلاس اسکریپت ها داشته باشی که هر فریم بیای اجراشون کنی.

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
razielsina
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 5 شنبه 8 تير 1385
تعداد ارسالها: 326
محل سكونت: ايران


2 شنبه 31 تير 1392 - 12:03
پاسخ بصورت نقل قول
ماهان جان دمت گرم.
با لوا اساسي كار كردم ولي تو يه چند راهي موندم. الان هم از متا تيبلها استفاده ميكنم كه كار منو راه ميندازه. مشكل دسترسي اشياء حل شد خدارو شكر.
حالا يه نكته:
فرض ما كلاسي داريم كه يك وضعيت لوا استيت ايجاد ميكنه يعني بايد براي هر اسكريژت يك لوا استيت ايجاد كنيم؟ اين كار بهينه هست يا خير؟
يه مشكل؟ ما ميتونيم چندين فايل اسكريژت رو همزمان بارگزاري كنيم و بعد در حلقه اصلي ترسيم توابع مربوطه رو فراخواني كنيم؟
والا بهتر از لوا فك كنم خود سي باشه. فعلاْ 1 هفته رو اين لوا دارم كار ميكنم البته قبلنها هم كار كرده بودم ولي يه 1 سالي هست در عرصه نيستيم ديگه. خيلي چيزا يادم رفته متاسفانه.

_________________
اهورا مزدا اين سرزمين مقدس را از هر گونه دشمن و خشكسالي به دور نگه دارد.
همانا از اسب افتاده ايم نه از اصل(مهدي اخوان ثالث)
www.sina-kian.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
razielsina
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 5 شنبه 8 تير 1385
تعداد ارسالها: 326
محل سكونت: ايران


2 شنبه 31 تير 1392 - 13:45
پاسخ بصورت نقل قول
به نظرت اين كار چطوره توي انجين.
بنده به هر گره و كلاسهاي مشتق شده از گره ها يك متد اختصاص دادم كه بشه باهاش يك اسكريپت رو به يه گره اختصاص داد. براي نمونه متدهاي مربوط به انتقالات و ..... رو بهشه در فايل اسكريژت مورد دسترسي قرار داد. به نظرت فكر خوبيه؟
تقريباْ اين لاكردا تموم بشه ميرم سراغ كد نويسي صوتي با OpenAL.

_________________
اهورا مزدا اين سرزمين مقدس را از هر گونه دشمن و خشكسالي به دور نگه دارد.
همانا از اسب افتاده ايم نه از اصل(مهدي اخوان ثالث)
www.sina-kian.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


2 شنبه 31 تير 1392 - 23:55
پاسخ بصورت نقل قول
razielsina, سینا توی قضیه ساختن state ها بستگی داره که چطوری میخوای رابط برنامه نویسی رو درست کنی. من شنفتم که اصولا باید یه state گلوبال درست کنی و برای همه کار ها از اون استفاده کنی ولی اینطوری باید این رو هم بدونی که اونموقع جدول G_ که ماله گلوبال ها توی خود lua هست توی تمام script ها share میشه. البته فقط گلوبال ها اینطورین وگرنه چیزهای دیگه فقط توی scope خود اسکریت اجراء میشن.

برای attach کردن اسکریپت ها من اینطوری عمل کردم. برای هر گره توی صحنه که معمولا یه کلاس هست که از چیز های دیگه مشتق شده یه vector از کلاس اسکریپت تعریف کردم که میتونی بهش اضافه کنی و حذف کنی. توی هر فریم من میام فقط خود اسکریپت ها که بصورت pointer توی resource manager قبلش لود شدن رو آپدیت میکنم. اگه بخوای بیای هر بار توی موقع ترسیم هر گره رو بگیری و این لیست رو پیمایش کنی یه سربار کاملا اشتباه بوجود میاد.

منظورت CSL هست یا خود C? چون اگه CSL باشه که من کاملا باهاش مخالفم!

در مورد ارتباط دادن توابع و متد ها راه دیگه ای غیر از این نداری.

راستی، به مَیادین برگرد! Very Happy

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
razielsina
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 5 شنبه 8 تير 1385
تعداد ارسالها: 326
محل سكونت: ايران


3 شنبه 1 مرداد 1392 - 00:44
پاسخ بصورت نقل قول
ماهان جان ببين من مثلاْ اين متد رو دارم:
SetScript
كه در واقع يكبار يه فايل اسكريژت رو بارگزاري ميكنه اونم تو موقع ساخت صحنه.
در حلقه اصلي ترسيم در حقيقت مياد يك تابع كلي به اسم finafunc رو فراخواني ميكنه كه در واقع توي استاندارد انجين من حكم تابع main رو تو سي داره كه خوب هم عمل كرده.
به طور كل در هر فايل اسكريپت ميشه با 160 تا متد تغييرات كلي روي گره ها-هندسي ها-توري ها-دوربين-هسته اصلي انجين-مواد-شيدرها-نور تغييرات ايجاد كرد.
البته مديريت منابع كه ليست كلي اسكريپتها رو با خودش داره ثابت هست و متد
SetScript فقط ادرس اشاره گر رو در گره يا ديگر كلاسها كپي ميكنه.
حالا يه نكته:
ميدوني محتواي كلي سايت مثل قبل منابع علمي لازم رو نداره. كلاْ شده يونيتي-يو دي كي و.............. مباحث برنامه نويسي و تخصصي اصلاْ نيست. خودت در نظر بگير به غير خودت كسي نبود كه جواب بده!
الان در بحث لوا فقط مباحث خيلي مقدماتي به وفور تو اينترنت پيدا ميشه و مباحث پيشرفته به زور گير مياد اگر هم گير بياد فقط كد هستش بدون توضيحات كه بايد كلي وقت صرف فهميدنش كرد.

_________________
اهورا مزدا اين سرزمين مقدس را از هر گونه دشمن و خشكسالي به دور نگه دارد.
همانا از اسب افتاده ايم نه از اصل(مهدي اخوان ثالث)
www.sina-kian.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 5 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه 1, 2, 3, 4, 5  بعدي


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |