View Full Version : دارم انجین مینویسم
1485159
سه شنبه 06 بهمن 1388, 21:01 عصر
سلام
من قبلا یه تاپیک زده بودم با عنوان "ساخت انجین 2 بعدی"
که من در اون تاپیک متوجه شدم که باید برم دنبال opengl و رفتم.
من همیشه دوسداشتم بیشتر بنویسم تا خوندن..:لبخند:
حالا من میخوام یه انجین بنویسم که برای ساخت بازی هایی مثل دوز و اسنیک و... باشه و کم کم روش کارکنم و....
ولی نمیدونم چطوری!!
2 روزه که دارم هی مینویسم ولی به نتیجه نمیرسم:گیج:
از شما میخوام که منو راهنمایی کنید که یک انجین باید چطوری طراحی بشه..
البته منظورم این نیست که آموزش بدین! منظورم اینه که بگین مثلا انجین برای ساخت بازی باید چه مراحلی رو طی کنه؟
برای مثال:
1- اول باید کاربر (برنامه نویس) یه هندل رو به انجین تحویل بده ..
2- باید...
3- باید...
همین باید ها رو من نمیدونم!!
ممنون میشم اگه راهنمایی کنید.:قلب:
pswin.pooya
چهارشنبه 07 بهمن 1388, 01:54 صبح
یه انجین قبل از هر کار باید و اما باید ساده باشه. یعنی برنامه نویس بازی رو تا د زیادی از مسائل مثل API و مخصوصا مسائل سیستمی (مثل روش کار با کی بورد، ساخت پنجره و ... ) به دور نگه داره. پس اینکه کاربر یه هندل به انجبن بده که انجین بیاد و براش یه چیزی مثل پنجره رو بسازه کاملا اشتباه هستش . البته انجین باید این گزینه رو هم به صورت اختیاری به برنامه نویس بده تا در صورت نیاز برنامه نویس ازش استفاده کنه.
به عنوان مثال برای انجین من (D-Engine) برای شروع به کار ( ساخت پنجره و کنترل مسیج و لوگ و ...) کد زیر کافی هستش:
#include "d-engine.h"
ussing namespace DEngine;
void main()
{
App.start();
}
تو مرحله دوم باید تا حد ممکن انعطاف پذیر باشه؟ یعنی به قدری روابط بین کلاسها (دیزاین) رو خوب بچینی که هر نوع قابلیتی رو که داخل بازیهای دو بعدی هستش رو ساپورت کنه ( که البته این مورد هیچ وقت محقق نمی شه و هر انجینی توی دنیا فقط روی چند تایپ خاص بازی جواب گو هستش نه همه نوع ها). این مورد کاملا تجربی هستش. و نمی شه گفت با خوندن چند تا کتاب میشه یه دیزاین خوب خوب داشتش.
حالا که OpenGL رو انتخاب کردی. بهتره به فکر ساخت یه انجین دو بعدی باشی که رو همه پلتفرمها جواب بده. OpenGL پلتفرهای زیادی رو مثل iPhone، سریهای جدید نوکیا، Mac OS، Linux و ... رو ساپورت میکنه که این خیلی میتونه به کارت بیاد و باعث محبوب شدن انجینت بشه.
1485159
چهارشنبه 07 بهمن 1388, 09:52 صبح
به عنوان مثال برای انجین من (D-Engine) برای شروع به کار ( ساخت پنجره و کنترل مسیج و لوگ و ...) کد زیر کافی هستش:
من توی انجینی که دیروز شروع کردم ( هنوز 5- 6 تا تابع براش نوشتم) کاربر با دادن نام فرم به انجین، انجین همه ی کار های مربوط به ایجاد پنجره و .. رو به طور اتوماتیک انجام میده و به وسیله توابع دیگه میشه این خصوصیات که پیشفرض هستند رو تغییر داد.
آیا این کار مناسبه؟
UltraZoom
چهارشنبه 07 بهمن 1388, 11:11 صبح
نمی دونم شما قبلا با انجین خاصی کار کردید یانه .
اگر تا به حال با اینجین های بازی سازی سروکار نداشته اید بهتر است ابتدا کمی با کار این انجین ها آشنا شوید . ببینید چه نیازهایی را برای بازی ساز پوشش میدهد .
شما خیلی کلی گفتید می خواهید یک انجنین برای بازی های 2 بعدی بنویسید . ابتدا باید شاخه های مختلف از بازی های دوبعدی مثل پلتفرمر ، ادونچر ، آرکید و ... رو مشخص کنید . قواعد کلی و جزیی هر یک را روشن کنید . مثلا در پلتفرمر دیوار و حرکت را تعریف کنید . سپس بخش به بخش موتور رو کامل کنید .
فاکتورهایی مثل فیزیک ، هوش مصنوعی و... هم هستند .
1485159
چهارشنبه 07 بهمن 1388, 15:15 عصر
نمی دونم شما قبلا با انجین خاصی کار کردید یانه .نه کار نکردم.
اگر تا به حال با اینجین های بازی سازی سروکار نداشته اید بهتر است ابتدا کمی با کار این انجین ها آشنا شوید . ببینید چه نیازهایی را برای بازی ساز پوشش میدهد .
شما خیلی کلی گفتید می خواهید یک انجنین برای بازی های 2 بعدی بنویسید . ابتدا باید شاخه های مختلف از بازی های دوبعدی مثل پلتفرمر ، ادونچر ، آرکید و ... رو مشخص کنید . قواعد کلی و جزیی هر یک را روشن کنید . مثلا در پلتفرمر دیوار و حرکت را تعریف کنید . سپس بخش به بخش موتور رو کامل کنید .
فاکتورهایی مثل فیزیک ، هوش مصنوعی و... هم هستند .من فعلا فقط میخوام گرافیکش رو کار کنم!!!
ممنون.
kochol
چهارشنبه 07 بهمن 1388, 17:27 عصر
نمی دونم شما قبلا با انجین خاصی کار کردید یانه .
اگر تا به حال با اینجین های بازی سازی سروکار نداشته اید بهتر است ابتدا کمی با کار این انجین ها آشنا شوید . ببینید چه نیازهایی را برای بازی ساز پوشش میدهد .
شما خیلی کلی گفتید می خواهید یک انجنین برای بازی های 2 بعدی بنویسید . ابتدا باید شاخه های مختلف از بازی های دوبعدی مثل پلتفرمر ، ادونچر ، آرکید و ... رو مشخص کنید . قواعد کلی و جزیی هر یک را روشن کنید . مثلا در پلتفرمر دیوار و حرکت را تعریف کنید . سپس بخش به بخش موتور رو کامل کنید .
فاکتورهایی مثل فیزیک ، هوش مصنوعی و... هم هستند .
سلام
من هم این قضیه رو پیشنهاد می کنم مخصوصا اگه موتور مورد بررسی ات یک موتور سورس باز باشه.
به این بازی هم یه نگاهی بنداز.
http://www.gamedev.net/community/forums/topic.asp?topic_id=532733
http://www.normal-tanks.com/
1485159
چهارشنبه 07 بهمن 1388, 17:32 عصر
مخصوصا اگه موتور مورد بررسی ات یک موتور سورس باز باشه.
نه! حتی قرار نیست که انجین رو به dll تبدیل کنم! بلکه به صورت سورس در گیمم استفاده خواهم کرد.
در مورد اون 2 تا گیم هم متوحه نشدم منظورتون چیه؟:لبخند:
ممنون.
kochol
چهارشنبه 07 بهمن 1388, 18:06 عصر
نه! حتی قرار نیست که انجین رو به dll تبدیل کنم! بلکه به صورت سورس در گیمم استفاده خواهم کرد.
هیچ فرقی نداره
اون هم یک گیم نه دو تا
گفتم شاید بخوای از این بازی 2 بعدی ایده بگیری
1485159
چهارشنبه 07 بهمن 1388, 18:20 عصر
اون هم یک گیم نه دو تا
درسته
من برای این انجین یه کلاس تعریف کردم که برنامه نویس بعد از اینکه یه نمونه از کلاس ایجاد کرد با تغییر در متغیر ها و ... میتونه شکل، خط، و.... ایجاد کنه. برای ایجاد هر شکل، یک کلاس لازم است، مگر اینکه polygon باشه.
البته این کلاس اونقدر ها هم که فکر میکنید ساده نیست! بلکه میتونه تمامی خصوصیات(از قبیل زاویه ی چرخش، تسکچر(که فعلا غیر فعاله)، نقطه ی صفر و صفر، رنگ و...) یک شکل رو ذخیره کنه و موقع رندر کردن اونها رو تحویل رندرگر بده!
به نظرتون چطوری؟ اشکالی که نداره؟
1485159
چهارشنبه 07 بهمن 1388, 18:23 عصر
من برای این انجین یه کلاس تعریف کردم که برنامه نویس بعد از اینکه یه نمونه از کلاس ایجاد کرد با تغییر در متغیر ها و ... میتونه شکل، خط، و.... ایجاد کنه. برای ایجاد هر شکل، یک کلاس لازم است، مگر اینکه polygon باشه.
البته این کلاس اونقدر ها هم که فکر میکنید ساده نیست! بلکه میتونه تمامی خصوصیات(از قبیل زاویه ی چرخش، تسکچر(که فعلا غیر فعاله)، نقطه ی صفر و صفر، رنگ و...) یک شکل رو ذخیره کنه و موقع رندر کردن اونها رو تحویل رندرگر بده!
به نظرتون چطوری؟ اشکالی که نداره؟
البته هنوز کامل نشده ولی امتحانش رو پس داده!:متفکر:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.