ایول خیلی خوشم اومد
راستی این occlusion culling رو سطوح غیر مسطح هم (مثل terrain ) هم به همین خوبی جواب میده ؟
این لود اوتوماتیک , اوتوماتیک بودنش یه طرف سرعتش منو کشته
ایول خیلی خوشم اومد
راستی این occlusion culling رو سطوح غیر مسطح هم (مثل terrain ) هم به همین خوبی جواب میده ؟
این لود اوتوماتیک , اوتوماتیک بودنش یه طرف سرعتش منو کشته
داداش یه خروجی هم میگرفتی یا لااقل تو یه فایل زیپ کلشو واسه دانلود میزاشتی تا بشه ازش استفاده کرد
منبع اصلی جدی google بوده.دوست عزیز اگه منابعی رو که معمولا ازشون استفاده کردی/میکنی رو بگی ( میدونم یه جای خاص نیست اما معمولا یکسری جاهیا خاص وجود دارن دیگه ) ممنون میشیم
بقیه منابع :
http://www.opengl.org/wiki/Main_Page
DirectX SDK documentation
کتابهای زیر هم پیشنهاد می کنم:
Math Primer for game developers
GPU Gems 3
Game Engine Architecture
منابع جزئی برای الگوریتم ها، یا کد رو در خود کد بصورت comment لینکش رو نوشتم.
ولی اصل قضیه google هست. کافیه بدونید چی می خواهید و دنبالش بگردید.
این پروژه تقریبا 1 سال هست که استارت خورده، ولی 4-5 ماه اول سرعت کمی داشت از اونجا که بیشتر روی انجین قبلی کار می کردم و همینطور پروژه های دیگه ای داشتم.حدودا چقدر زمان براش گذاشتی
ولی شاید 6 سالی هست که در این زمینه تجربه و مطالعه می کنم. خیلی از الگوریتم ها، طراحی انجین و متد ها رو از قبل نوشته بودم یا می دونستم.
اون مدل هایی که لینکش رو دادی رو هنوز نتوستم دانلود و ازشون استفاده کنم، در نسخه بعدی سعی می کنم از اونها هم استفاده کنم، متاسفانه اکانت rapidshare ام تموم شده.اگه میشه برای این نمونه جدید ی محیط خیلی بزرگ با کلی مدل و .. درست کن occlusion culling هم ک داری بزار ببینیم چطور می شه مدل هم ک زیاد داری
برای دموی 0.4 یک اسکریپت نوشتم که تعداد بیشتری مدل و نور رو ادغام می کنه و محیط بزرگتر هست. اما هنوز تنوع مدل ندارم، و همینطور مدل ساز با من همکاری نمی کنه که بتونیم یک محیط واقعی درست کنیم. فعلا تست هام رو با نوشتن اسکریپتهای ساده انجام می دم.
بله، تنها نکته occ culling اینجاست که مدل ساز باید یک مدل بسیار low-poly از مدل درست کنه، برای terrain مثلا می تونه به جای تپه و کوه حتی یک مکعب بگذاره ... مدل سازی برای occ culling به قدری راحته که یک برنامه نویس هم می تونه انجام بده.راستی این occlusion culling رو سطوح غیر مسطح هم (مثل terrain ) هم به همین خوبی جواب میده ؟
یک نکته مثبت middle-ware هایی مثل umbra3 اینه که مش های occ culling رو به صورت اتوماتیک درست می کنند (اگر 10 هزار دلار می خواهید خرج کنید)
خروجی به صورت باینری تا دو روز دیگه آماده می شه. اما سورس کل پروژه هم در دسترس هست، می تونید خودتون هر موقع بگیرید، کامپایل کنید و نتیجه رو ببینید.داداش یه خروجی هم میگرفتی یا لااقل تو یه فایل زیپ کلشو واسه دانلود میزاشتی تا بشه ازش استفاده کرد
سلام خیلی حال کردم
فقط 2 تا سوال البته شاید کمی خنده دار به نظر برسه
1 - اون کنسول رو چجوری ساختی همون که بهش دستور میدی رو ؟
2 - اون خط های کمکی رو همون خط های شطرنجی رو با چه دستوری ساختی ؟؟ با line ؟ بعدا وقتی حرکت میکنی واسه تو پرش نداره اونی که من یک الگوریتم براش نوشتم که با line درست شده خیلی خیلی میلرزید اصلا خط هاش موج مینداخت توش اگه میشه بگو چجوری ساختی
ممنون
@سپول
اقا می گم شما ک همه چی اضافه کردی ی سیستم LOD هوشمند هم درست کن براش ن ازینا ک طرف باید بره توی 3 دی مکس و ازمدلش چند تا با کیفیت های مختلف بسازه
مثلا توی یکی از سمپلهای نسخه جدید OGRE اگه دیده باشی طوریه ک بر اساس فاصله راس ها ادقام میشه مثلا 10 تا مثلث کنار هم رو می کنه 1 مثلث طوری ک تکسچر و .. هم بهم نریزه
اگه اینو هم ب موتورت اضافه کنی دیگه عالی میشه
راستی شما قصد اضافه کردن فیزیک و صدا رو هم داری یا فقط می خوای رو رندر کار کنی ؟
dark hammer engine نوشته انجینه اگه برای رندر بود میشد render ware حالا نمیدونم ولی به اسم که باید شامل تمامی چیزای یک انجین باشه
این تکنیک الان پیاده سازی شده و با باینری خواهید دید.اقا می گم شما ک همه چی اضافه کردی ی سیستم LOD هوشمند هم درست کن براش ن ازینا ک طرف باید بره توی 3 دی مکس و ازمدلش چند تا با کیفیت های مختلف بسازه
عجله نکن. تو نسخه 0.5 فیزیک و پارتیکل سیستم هم اضافه می شه.dark hammer engine نوشته انجینه اگه برای رندر بود میشد render ware حالا نمیدونم ولی به اسم که باید شامل تمامی چیزای یک انجین باشه
چیز خاصی نداره، موتور یک سیستم رسم دو بعدی داره که باهاش فونت، مستطیل و این چیزها رو می کشی. (gfx-canvas) بقیه اش می شه برنامه نویسی UI ساده. برای مطالعه بیشتر سورس های فایل های console.c و debug-hud.c رو یک نگاه بنداز.اون کنسول رو چجوری ساختی همون که بهش دستور میدی رو ؟
با line هست. اون جدول رو با یک الگوریتم ساده مختصات خط ها رو مثلا با واجد 5.0 گرد می کنید. یعنی مثلا مختصات شروع خط باشه 3.5، 0، 0 . این مختصات تبدیل می شه به 5.0، 0، 0.اون خط های کمکی رو همون خط های شطرنجی رو با چه دستوری ساختی ؟؟ با line ؟ بعدا وقتی حرکت میکنی واسه تو پرش نداره اونی که من یک الگوریتم براش نوشتم که با line درست شده خیلی خیلی میلرزید اصلا خط هاش موج مینداخت توش اگه میشه بگو چجوری ساختی
باز هم باید کد رو بخونی، فایل gfx-canvas.c تابع gfx_canvas_grid.
اها یه سوال دیگه تو اصلا از کتابخانه ی sdl برای ساخت انجین استفاده کردی یا نه ؟؟
نه، از sdl یا چیز دیگه ای استفاده نشدهاها یه سوال دیگه تو اصلا از کتابخانه ی sdl برای ساخت انجین استفاده کردی یا نه ؟؟
ولی برای رابط کاربر ابزارها کلا از Qt و Python و شاید .NET (که کاربر amiv.v در حال کار و تحقیق روش هست) استفاده خواهد شد.
نسخه 0.4 هم آماده شد. این نسخه بیشتر بر روی سرعت و متدهای بهینه سازی تمرکز داشت.
تغییرات جدید در این نسخه :
- occlusion culling: متدی کاملا داینامیک و بهینه سازی شده توسط SSE4.1 (و قابلیت اجرا بر روی پرادزشگر های پایین تر و AMD که SSE4 ندارند) برای حذف اشیائی که دیده نمی شوند. (ویدیو: http://www.aparat.com/v/8b1UY)
- Uniform grid partitioning: متدی برای تقسیم بندی صحنه به قسمت کوچکتر جهت مدیریت سریعتر روی اشیاء.
- Discrete LOD: تغییر کیفیت و یا رندرینگ اشیاء (نور، مدل، ...) براساس فاصله تا دوربین، با امکان تعریف scheme های مختلف برای دسته ای اشیاء.
- Hot-loading: پردازش و لود اتوماتیک تمامی resource ها (مدل، اسکریپت، تکسچر ...) در صورت تغییر فایل اصلی (ویدیو: http://www.aparat.com/v/RgWx1)
- بهینه سازی سیستم اسکریپت با lua
- شروع بایندینگ برای زبان python برای گسترش بهتر موتور و ساختن ابزارها با رابط کاربری
باینری برای ویندوز هم آماده هست و بر روی کارت ATI 5950، و پردازشگر Intel Core2 Quad تست شده (خواهشا با سخت افزار ضعیف مخصوصا کارت گرافیک های intel اجراش نکنین) :
http://hmrengine.com/demos/dark-hamm...in-x86-bin.zip
ویدیو جدید هم آپلود کردم که ابزار پروفایل و مانتیورینگ حافظه رو نشون می ده :
http://www.aparat.com/v/CXS7U
در دمو، یک اسکریپت سنگین رو اجرا می کنم که حدود 150 مدل رو در یک مسیر محاسبه می کنه و حرکت می ده . این کار در اصلی به عهده خود انجین باید باشه (که هم سرعت بیشتر داشته باشه و هم درون یابی صورت بگیره جهت روان حرکت کردن). ولی با اسکریپت انجام دادم برای استرس گذاشتن و تست اسکریپت ها.
کد اسکریپت که در دمو می بینید به شکل زیر هست :
core.printcon("loading scene ...")
s = eng.scene()
s:clear()
s:createModel("ground", "test-data/plane.h3dm")
-- place houses on the elipse
house_cnt = 30
delta = 2*math.pi/house_cnt
alpha = 0
for t=1, house_cnt do
x = 100*math.sin(alpha)
z = 20*math.cos(alpha)
h = s:createModel("house" .. t, "test-data/house.h3dm")
h:move(x, 0, z)
h:rotate(0, core.randRangeFloat(0, 360), 0)
alpha = alpha + delta
end
path = {
core.vec3(-62.400684, 9.764269, -30.181873),
core.vec3(-22.908751, 5.574275, -36.407116),
core.vec3(12.721034, 7.617999, -32.171288),
core.vec3(25.004932, 6.156801, -41.141724),
core.vec3(51.172447, 5.933318, -28.525585),
core.vec3(93.80822, 4.819061, -33.434326),
core.vec3(124.887253, 6.7191, 5.68144),
core.vec3(97.621857, 10.731023, 23.264616),
core.vec3(15.508122, 10.229074, 30.396282),
core.vec3(-59.962864, 4.42202, 37.74939),
core.vec3(-105.928719, 9.922335, 17.078924),
core.vec3(-122.609703, 6.607499, -7.886065)
}
objects = {
"test-data/barrel.h3dm",
"test-data/wagon.h3dm",
"test-data/booth.h3dm"
}
length = 60
frame_cnt = 12
update_interval = 16
ft = length/frame_cnt
pos = core.vec3()
objmap = {}
function get_nextframe(frame, cnt)
r = (frame + 1) % (cnt + 1)
if r == 0 then
r = 1
end
return r
end
function get_random_color()
c = 255*core.randFloat() + 128
if c > 255 then
c = 255
end
return c
end
-- move objects along the path (timer event)
function follow_path(id)
local ent = objmap[id]
local obj = ent[1]
local t = ent[2]
t = math.fmod(t, length)
local frame = math.floor(t/ft) + 1
local prev_frame = frame - 1
if prev_frame == 0 then
prev_frame = frame_cnt
end
local next_frame = get_nextframe(frame, frame_cnt)
local next_frame2 = get_nextframe(next_frame, frame_cnt)
local i = (t - ((frame - 1)*ft))/ft
obj:move(pos:cubic(path[prev_frame], path[frame], path[next_frame], path[next_frame2], i))
t = t + (update_interval/1000)
ent[2] = t
end
-- create objects with a timer
obj_cnt = 0
obj_max = 150
function spawn_object(id)
obj_cnt = obj_cnt + 1
local toss = core.randRangeInt(1, 100)
if toss > 92 then
obj = s:createModelLod("statue" .. obj_cnt, "test-data/statue.h3dm", "test-data/statue-md.h3dm", "test-data/statue-lo.h3dm")
else
if toss > 75 then
obj = s:createPointLight("light" .. obj_cnt)
obj:setcolor("light", "color", get_random_color(), get_random_color(), get_random_color(), 1)
obj:setf("light", "atten_far", 5)
obj:setf("light", "intensity", 2)
else
objfile = objects[core.randRangeInt(1, 3)]
obj = s:createModel("obj" .. obj_cnt, objfile)
end
end
-- spawn at start path and random rotation
obj:move(path[1])
obj:rotate(core.randRangeFloat(0, 360), core.randRangeFloat(0, 360), 0)
if obj_cnt >= obj_max then
eng.removeTimer(id)
end
local tid = eng.addTimer(update_interval + core.randRangeFloat(0, 6), "follow_path")
local ent = {[1]=obj, [2]=0, [3]=light}
objmap[tid] = ent
end
eng.addTimer(1000, "spawn_object")
eng.setSunDir(1, -0.5, 0)
eng.setSunIntensity(0.8)
برای اطلاعات بیشتر در مورد API اسکریپت به این لینک بروید (که به مرور کاملتر می شه) :
https://bitbucket.org/sepul/dark-ham...nce-guide.wiki
آخرین ویرایش به وسیله سپول : یک شنبه 29 اردیبهشت 1392 در 13:25 عصر
یه سوال داشتم
میدونی این انجین های خارجی رو چند نفره ساختن ؟؟ مثلا همین ogre 3d یا irrlicht یا idtech اینا رو چند نفره ساختن ؟؟
موتور بازی سازی dark hammer قدرت ساخت یک بازی fps رو داره یا نه ؟؟
موتور dark-hammer "قراره" که واسه همین سبک ساخته بشه، بر خلاف انجین های سورس باز generic مثل همین ogre، من خیال دارم سبک رو محدود کنم و تمرکز رو روی همین سبک بگذارم تا بشه بهتر بهینه سازی کرد. ولی همونطور که می بینی تازه اول راهه
آخرین ویرایش به وسیله سپول : دوشنبه 06 خرداد 1392 در 02:41 صبح
من ولی هنوز موندم چجوری میشه چند نفره موتور رو ساخت مثلا 20 نفر پای یک انجین ؟؟ هرکی باید کد رو خودش بنویسه تا بفهمه چی نوشته دیگه مثلا اگه یک نفر شیدر رو بسازه یک نفر مثلا کل برخورد و فیزیک رو اینا رو چجوری میتونن با هم ارتباط برقرار بدن ؟؟
.
راستی لول ادیتور موتور رو چی ادیتور سیمرغ رو 1 نفره ساختن ولی فکر نکنم ادیتور انجین هایی مثل udk و frostbite رو یک نفره ساخته باشین اطلاعاتی داری ؟؟
اکثر انجین ها رو برای ساخت بازی استراتژی میذارن فکر کنم چون قدرت گرافیکیشون کمه درسته ؟؟
.
تو میخای موتور رو برای بازی fps درست کنی اونوقت opengl یک خورده برای این کار ضعیف نیست ؟؟ یه تحقیقی که 5 دقیقه ای انجام دادم تمامی انجین ها یا با دایرکت ساخته شدن یا با دایرکت و جی ال فکر نکنم جی ال به تنهایی کیفیت داشته باشه http://content.gpwiki.org/index.php/Game_Engines
میشه با دایرکت ایکس یک نفره کار کرد ؟ تا اینجای کار رو تکی رفتی درسته تا اخر میخای یک نفره کار کنی سر خود انجین یا نه ؟؟
ببخشید که اینقدر سوال شد ولی میدونین انجین های بزرگ مثل یو دی کا و یا یونیتی رو چند نفره ساختن ؟؟
ممنون
ارسال اول رو بخون گفته با DX11 , OGL3تو میخای موتور رو برای بازی fps درست کنی اونوقت opengl یک خورده برای این کار ضعیف نیست ؟؟
فکر کنم اینجا جای بحث دایرکت خوبه یا جی ال نیست
DirectX و OpenGL بحثش اول تاپیک بود. اونها رو بخون.
آخرین ویرایش به وسیله سپول : دوشنبه 06 خرداد 1392 در 02:40 صبح
فکر نکنم OpenGl به پای direct x برسه تقریبا اکثر انجین ها با دایرکت ایکس ساخته شدن و همه ی بازی هارو دایرکت ایکس پشتیبانی میکنه و سخت ابزار های گرافیکی رو هم همچنین direct x و مکمل اون یعنی nvidia ساپورت میکنه ولی microsoft تو کارش اوله فکر نکنم کسی به پاش برسه
ببین اینجا دیگه نمیتونم حرف بزنم چون به موتور dark hammer مربوط نمیشه پ خ میدم
ممنون
لطفا سوالات مربوط به انجین رو اینجا مطرح کن و سوال های دیگه رو بگذار واسه تاپیک های دیگه.
آخرین ویرایش به وسیله سپول : دوشنبه 06 خرداد 1392 در 02:40 صبح
ببخشید این اخرین حرفی که دارم تو این تاپیک میزندم (ربطی به عنان نداره )
مایکروسافت تو هیچ کارش جز xna اخر نیست
تو IDE حرف اولو میزنه .. تو زبون برنامه نویسی حرف اولو میزنه ... تو ساخت قطعات کامپیوتری و سخت ابزاری حرف اولو میزنه تو ریزپردازنده ها حرف اولو میزنه کلیات سیستم PDA و PPC رو مایکروسافت راه انداخته .. بهترین و کمسوخت ترین کنسول بازی سازی رو مایکروسافت ساخته .. بهترین و پرطرفدار ترین API گرافیکی رو مایکروسافت ساخته API ای که حداکثر 4 درصد از سی پیو استفاده میکنه ... از نظر رندر هم با API مایکروسافت (DIRECT ) حرف اولو میزنه این حقیقت تو نرم افزار های 3DSMAX و MAYE و انجین بازی سازی UDK و S2 کاملا پیداست
ممنون
سلام اولین پست من تو این سایت بد از 6 سال......
باید گفت کار شما بسیار جای قدر دانی و حمایت رو داره اما چون اینجا ایرانه ما از شما قدردانی میکنیم و آرزوی
بهترین ها برای شما...ای کاش بچه های 3D هم اینجا بودن شما ها رو حمایت میکردن....
ویدیو جدید در مورد تست های اولیه فیزیک در موتور dark-hammer :
هم اکنون پایه اولیه فیزیک تموم شده، rigid body (فیزیک اجسام صلب) به طور کامل پیاده شده ؛ همراه با بایندینگ های اسکریپت، کامپوننت و export و import مش های collision و مشخصات rigid body.
موتور فیزیک physx 3 هست و چون abstract شده امکان اضافه و عوض کردن موتور فیزیک هم در آینده وجود داره.
آپارات: http://www.aparat.com/v/rxoy8
یوتیوب: https://www.youtube.com/watch?v=EhOq-hct-Ek
آخرین ویرایش به وسیله سپول : دوشنبه 20 خرداد 1392 در 00:28 صبح
آپدیت جدید برای موتور dark-hammer :
- نسخه اولیه وبسایت موتور راه افتاد : http://www.hmrengine.com/
- انجین به نسخه 0.4.6 ارتقا پیدا کرده و ساختاری کاملا multi-platform داره
- موتور فیزیک Physx3 همراه با پشتیبانی از اجسام صلب
- Attachment ها برای چسباندن اشیاء (فیزیکی و غیر فیزیکی) به یکدیگر
- Trigger ها و امکان استفاده از آنها در اسکریپت
- از تغییرات بنیادی در کد عوض شدن سیستم build از CMake به Waf هست
- ساپورت پلتفرم Mac OSX. هم اکنون موتور قابل کامپایل و اجرا روی پلتفرم های linux، windows و OSX می باشد.
در ضمن دو برنامه نویس دیگه وارد پروژه شدند، از اونجا که این پروژه هنوز به نسخه اول هم نرسیده و باعث جذب برنامه نویس های علاقمند شده (بدون ساپورت مالی) دمشون هم گرم :
- امین ولینژاد: که عضو همین فروم هم هست و هم اکنون در حال ساختن پورت .NET این موتور و همینطور کار بر روی طراحی و پیاده سازی یک سری ابزارهای گرافیکی هست که در وبلاگ می تونید پروسه کار رو دنبال کنید. https://bitbucket.org/Amin67v/sharphammer
- دیوید باشت: برنامه نویسی فرانسوی که حدود 2 ماه پیش وارد پروژه شد و موتور رو به OSX پورت کرد، همواره هم کار می کنیم با هم که اشکالات جزئی رو در OSX بگیریم.
آخرین ویرایش به وسیله سپول : شنبه 12 مرداد 1392 در 18:04 عصر
شاید باورت نشه سپول ولی من امروز صبح به سایت انجین سر زدم دیدم هنوز همونطوری مونده بعد از گذشت چندین ماه 1 روز نشده اپدیت شد ممنون دمت گرم
راستی میشه از تمامی کد های انجین استفاده کرد ؟؟ یعنی میتونم کد هاشو عوض کنم و به موتور خودم پیوند بدم ؟؟ البته موتور که نه یک چیز کوچیک که 20 هزار خطم براش کد ننوشتم هنوز اره میشه این کار رو کرد ؟؟ البته برای جاذبه فیزیک دارم که بولت باشه ولی فکر کنم فیزیک تو انویدیاست
راستی اون ادیتور که همون اول بلاگ هست رو با mfc ساختی ؟؟
در ضمن اون عکسی که از گذاشتی رو عوض کن چون اصلا به صفحه ی اول انجین نمیاد http://www.hmrengine.com/#
میشه لطف کنین یک نشانی چیزی از این امین ولنژاد به من بدین ؟؟ خیلی ممنون
ایول.
من ویدئو و شات ها رو دیدم. خیلی عالی بود.
دم سپول و بچه های دیگه گرم. به امید روزی که یه بازی خیلی خوب با این موتور ساخته بشه.
سلام
من وقتی می خوام انجین رو با (4.2) gcc کامپایل کنم، خطا میده که اعلان متغیر ها تو حلقه for فقط تو C99 مجازه!
می دونید مشکل از کجاست؟
----------------------------------------------
و میشه بگید منظورتون از linux developer community کدوم انجمن بود؟
چون من که سرچ کردم هزارتا انجمن لینوکس بود!!!
آخرین ویرایش به وسیله emadacx : شنبه 26 بهمن 1392 در 18:27 عصر
باید بامن وقتی می خوام انجین رو با (4.2) gcc کامپایل کنم، خطا میده که اعلان متغیر ها تو حلقه for فقط تو C99 مجازه!
می دونید مشکل از کجاست؟
-std=gnu99
کامپایل کنی.
اگه همون فایل readme رو که اینجا هست :
https://bitbucket.org/sepul/dark-hammer
بخونی، باید موتور رو با سیستم waf بیلد کنی، خودت بصورت دستی با gcc کامپایل نکن چون دهنت سرویس می شه.
منظورم از linux developer community همون جامعه برنامه نویسهای لینوکس هست، سایت خاصی نیست.