اكتشفت احد اسباب البطئ
كثرة Ink في الـ loop تجعل اللعبة ليست بالسرعة المطلوبة
وانا بحاول اكتشف ايه اسباب البطئ اكتشفت السبب ده وقولت اعرضه للفايدة
والله اعلم
ومازالت المحاولات مستمرة
اكتشفت احد اسباب البطئ
كثرة Ink في الـ loop تجعل اللعبة ليست بالسرعة المطلوبة
وانا بحاول اكتشف ايه اسباب البطئ اكتشفت السبب ده وقولت اعرضه للفايدة
والله اعلم
ومازالت المحاولات مستمرة
مشكلة
هي ليست مشكلة وانما شيء اريد ان اتعلمه ولم استطع ان احصل عليه بمفردي
تعلم الاضائة .. كيف يمكن ان اعمل اضائة في مكان معين .. وكيف يمكن ان اعمل اضائة مع البطل
كيفية التعامل مع الـ Vector
وايضا اقتراحات لعمل دم بالـ Particles
عزيزي ايفل : لا اريد اكواد جاهزة وانما التعلم
آسف على الرد المتأخر
بالنسبة للاضاءة هناك الاضاءة التقليدية مثل make light والاضائة الاحترافية طبعا مع الشيدرز واعطيتك رابط لموقع افولفد اللي يصنع الشيدرات هناك عدة خامات ممتازة جداً تعطي واقعية وهناك امثلة كثيرة على الاضاءة..ايضا في الموقع هناك حزمة للاضاءة الاحترافية يمكنك تجربتها..
http://www.evolved-software.com/shaders/bumpmapping
اما بالنسبة للفيكتورز فاي فيكتورز تقصد بالضبط ؟؟
اما البارتكلز فلم استخدمه مع الاسف
صلوا على النبي صلـ اللهـ عليهـ وسلمــسبحان الله وبحمده *** سبحان الله العظيم
اشكرك اخي العزيز
انا بتكلم عن عمل فلاش لايت .. في مثال في الموقع اللي انت حاطه عن الفلاش لايت وانا نزلته لكن للاسف مفيش شرح
وانا مش فاهم الكود ماشي ازاي
ياريت تشرحلي ازاي اتعامل مع الاضائة يا عزيزي
اخي العزيز امير... لاداعي لفهم السورس 100% فهو للاستخدام ((الجاهز)) فقط قم بتغيير بعض القيم لتتناسب مع البيئة في مشروعك
اما مسألة الشرح فيمكنك الضغط بالزر F1 على الكود ثم ستجد الشرح مع الوصف ومثال بسيط... انا لم استخدم الفلاش لايت لذا اعذرني لانني لا افقه فيه شيئاً
لكن كنصيحه اذا كنت تريد فلاش لايت يمكنك استخدام 2D Shadow Mapping فهو يدعم الظل لكن المشكلة انه لايدعم الا مصدر ضوء واحد :
http://www.evolved-software.com/shaders/shadowing
هناك لعبة لـ Mike Inel قام بعمل مثل هذه الميزة
http://www.youtube.com/watch?v=pfVF3_E5lTo
اما بالنسبة للفيكتورز فالبعض منها خاص بقيم الشيدر FX كي تفهمها لابد ان يكون لديك برنامج تشغيل الشيدرز مثل fx composer او dark shader
وان اتيحت لي الفرصة سأقوم بدراسة الديمو واضع لك شرح له ان شاء الله
صلوا على النبي صلـ اللهـ عليهـ وسلمــسبحان الله وبحمده *** سبحان الله العظيم
قمت بتعديل الكود لعمل فلاش لايت في موقع اللاعب والتدوير بالماوس للمثال Shadow mapping
كود:`==================================================== ` Depth Shadow Mapping `==================================================== ` By EVOLVED ` www.evolved-software.com `==================================================== `Setup Display load dll "user32.dll",1 Sw=call dll(1,"GetSystemMetrics",0) Sh=call dll(1,"GetSystemMetrics",1) delete dll 1 set display mode Sw,Sh,32,1 sync on : sync rate 0 hide mouse `Set Text set text font "Verdana" set text size 15 set text to bold ink rgb(200,200,0),0 `Setup Camera backdrop on color backdrop rgb(128,128,128) autocam off position camera 0,0,-150 set camera fov 85 xrotate camera 30 CamDis#=-100 `Load Textures load image "Media/rockwall.dds",1 : image=1 load image "Media/rockwall_n.dds",2 load image "Media/spotlight.bmp",3 load image "Media/floor.dds",5 load image "Media/floor_n.dds",6 make camera 1 set camera to image 1,4,512,512 set camera fov 1,60 set camera aspect 1,1.1 backdrop off 1 `Create Object load effect "FX/ShadowMapping.fx",1,0 load object "Media/t-pot.x",1 : object=1 scale object 1,4500,4500,4500 scale object texture 1,0,4,3 texture object 1,0,1 texture object 1,1,2 texture object 1,2,3 texture object 1,3,4 set object effect 1,1 `Create floor make object box 2,500,1,500 position object 2,0,-65,0 texture object 2,0,5 texture object 2,1,6 texture object 2,2,3 texture object 2,3,4 scale object texture 2,0,5,5 set object effect 2,1 `Light vectors LX#=-156:LY#=200:LZ#=-126 LaX#=56:LaY#=83:LaZ#=0 Null=make matrix4(1) Null=make matrix4(2) Null=make matrix4(3) Null=make vector4(6) make object cube 4,10 hide object 1 `Start loop do if lower$(inkey$()) = "w" then move object 4,1 if lower$(inkey$()) = "s" then move object 4,-1 if lower$(inkey$()) = "d" then move object right 4,1 if lower$(inkey$()) = "a" then move object left 4,1 xrotate object 4,object angle x(4)+mousemovey()*0.25 yrotate object 4,object angle y(4)+mousemovex()*0.25 `Control Camera position camera 0,0,0 if mouseclick()=0 ` xrotate camera camera angle x()-mousemovey()*0.25 ` yrotate camera camera angle y()+mousemovex()*0.25 if camera angle x()>80 then xrotate camera 80 if camera angle x()<-60 then xrotate camera -60 endif if mouseclick()>0 then CamDis#=CamDis#-mousemovey()*0.25 CamDis#=CamDis#+mousemovez()*0.25 if upkey()=1 then CamDis#=CamDis#+2.5 if downkey()=1 then CamDis#=CamDis#-2.5 if CamDis#>-20 then CamDis#=-20 if CamDis#<-300 then CamDis#=-300 move camera CamDis# if camera position y()<-60 then position camera camera position x(),-60,camera position z() mousemovex()=0 mousemovey()=0 `Rotate object if KEYSTATE(19)=1 and rotate=1 and nopress=0 then rotate=0:nopress=1 if KEYSTATE(19)=1 and rotate=0 and nopress=0 then rotate=1:nopress=1 if rotate=0 rotate object 1,0,object angle y(1)+0.5,0 endif `Change Texture if KEYSTATE(20)=1 and nopress=0 delete image 1:delete image 2 inc image if image>4 then image=1 if image=1 then load image "Media/rockwall.dds",1 :load image "Media/rockwall_n.dds",2 if image=2 then load image "Media/wall1.dds",1:load image "Media/wall1_n.dds",2 if image=3 then load image "Media/oldwall3.dds",1:load image "Media/oldwall3_n.dds",2 if image=4 then load image "Media/rock4_1.dds",1 :load image "Media/rock4_1_n.dds",2 texture object 1,0,1 texture object 1,1,2 nopress=1 endif `Change Object if Spacekey()=1 and nopress=0 delete object 1 inc object if object>5 then object=1 if object=1 then load object "Media/t-pot.x",1:scale object 1,4500,4500,4500:scale object texture 1,0,4,3 if object=2 then load object "Media/Tosus.x",1:scale object texture 1,0,1.5,1 if object=3 then make object box 1,75,75,75 if object=4 then make object sphere 1,75,40,40:scale object texture 1,0,2,1 if object=5 then make object cylinder 1,75:scale object texture 1,0,3,1 texture object 1,0,1:texture object 1,1,2:texture object 1,2,3:texture object 1,3,4 set object effect 1,1 nopress=1 endif if scancode()=0 then nopress=0 `Set spot Light to camera position ` if Shiftkey()=1 LX#=object position x(4):LY#=object position y(4):LZ#=object position z(4) LaX#=object angle x(4):LaY#=object angle y(4):LaZ#=object angle z(4) ` endif set vector4 6,LX#,LY#,LZ#,0 set effect constant vector 1,"LightPosition",6 `Text center text sw/2,15,"1 - Show Depth Texture Shift - Set Spot Light To Camera Space - Change Object T - Change Texture R - Rotate Object" center text sw/2,40,"FPS "+str$(screen fps()) `Set Shadow shader light projection Matrix SET CURRENT CAMERA 1 position camera 1,LX#,LY#,LZ# Rotate camera 1,LaX#,LaY#,LaZ# view matrix4 1:projection matrix4 2 multiply matrix4 3,1,2 set effect constant matrix 1,"LightProjMatrix",3 SET CURRENT CAMERA 0 set effect technique 1,"DepthMap" sync mask 2^1:fastsync if KEYSTATE(2)=1 then paste image 4,0,0 `Main Scene set effect technique 1,"ShadowMapping" sync mask 2^0 `End loop sync loopفقط تغيير زاوية وموقع الكاميرا الى زاوية وموقع الاوبجكتكود:LX#=object position x(4):LY#=object position y(4):LZ#=object position z(4) LaX#=object angle x(4):LaY#=object angle y(4):LaZ#=object angle z(4)
الكود السابق مثل كود لعبة iott والتي وضعت لك رابط لها لـ mike inel
صلوا على النبي صلـ اللهـ عليهـ وسلمــسبحان الله وبحمده *** سبحان الله العظيم
شكرا لك
كده انا فهمت الموضوع كله
بعد تجربة مع الكود
المعلومة اللي كنت عاوز اعرفها فعلا ان تأثير الضوء له علاقة اساسية بالـ Effect على العالم المحيط
طبعا انا كنت فاكر ان الموضوع له علاقة بالاكواد فقط وليس بملفات الـ fx
صاحب ظهور الضوء عدة اشياء كاختفاء الضباب الاسود بسبب الـ Effect وكذلك اختفاء اضائة وهج السلاح عند اطلاق النار
واعتقد ايضا ان حل الموضوع في ايجاد الـ effect المناسب
شكرا يا عزيزي
العفو
نعم كلامك صحيح... لكل تأثير خصائصة فانت ستعين الضياب والـambient وموقع الضوء ولونه عن طريق خصائص الـ fx نفسه
جرب حمل الدارك شيدر :
https://rapidshare.com/#!download|40...E6AB473EAE|0|0
الباسوورد:
Agent3004
ملاحظة: بالنسبة للفيكتورز اللي سألتني عنها طبعا هناك فرق بين الفيكتور في النيوتن والفيكتور في الشيدرز والفيكتور في الدارك بيسيك
طبعا فائدة الفيكتور العادي (الدارك بيسيك) لما تحب تحدد نقطة معينة للمجسم او تعيين اتجاهه
اما في النيوتن فأعتقد ان الامر وضح لك
اما في الشيدرز الامر مختلف قليلا
فمثلا لو كنت تريد تغيير لون الضوء او تغيير موقعه او اي شيء يتطلب 3 قيم فلابد من استخدام الفيكتور
للتوضيح
لو كان لديك شيدر يحمل قيمة فانت ستستخدم هذا الكود (هذه الحالة الاولى)
set effect constant integer EffectNumber,ConstantString,ConstantValue
set effect constant float EffectNumber,ConstantString,ConstantValue
set effect constant Boolean EffectNumber,ConstantString,ConstantValue
طبعا integer عدد صحيح مثل -5 ,1,2,3... ،float عدد عميق كسري 1.5 ...1.23 ، boolean عدد من 0 الى 1
يوجد ايضا
set effect constant matrix
set effect constant vector
اما الحالة الثانية
عند تغيير لون الضوء فانت ستقوم بتغيير درجات الالوان RGB تحمل 3 قيم نستخدم الفيكتور (4)
null=make vector4(1)
red#=1
green#=1
blue#=1
set vector4 1, red#, green#, blue#, 1.0 `alpha
set effect constant vector 1, "LightColor", 1
آسف على الشرح الركيك والغير منظم كما آمل أن تكون قد وضحت الصورة
تحياتي
صلوا على النبي صلـ اللهـ عليهـ وسلمــسبحان الله وبحمده *** سبحان الله العظيم
ملاحظة مهمه كل تأثير مستقل بذاته ... مثلا لوكان الشيدر يحمل مصدر واحد للضوء فلن يتأثر بغيره حتى لو طبقت نفس التأثير مع تغيير اللون لمجسم اخر بجانبه... حتى الـ Fog والـ Ambient
الا في حالة ان نفس الشيدر يحمل عدة مصارد للضوء ... ايضاً افولفد كتب شيدر عن الاضاءة المتعددة Multipass Lighting
لن تستطيع فهم الكلام الا اذا جربتها بنفسك
صلوا على النبي صلـ اللهـ عليهـ وسلمــسبحان الله وبحمده *** سبحان الله العظيم
شرحك جميل جدا واوضحلي الصورة بشكل كبير
التعامل مع الضوء يحتاج الى تعامل مع الـ Effect اولا
ومن هنا يظهر سؤالان
الاول : كيف يمكن الحصول على قيم الـ constant string
الثاني : ما الفرق بين Vector , vector3 , vector4 ؟
اشكرك ياعزيزي ... نعم فقط خصائص الـ effect ولن يؤثر عليه اي مؤثر خارجيشرحك جميل جدا واوضحلي الصورة بشكل كبيرالتعامل مع الضوء يحتاج الى تعامل مع الـ Effect اولا
حتى make light , set object ambient,set object ambience, fog ,set object light
كأن المجسم في عالم خاص به حتى لو كان خلاف المحيط من حيث اللون او الضباب
بالنسبة للأسئلة
لو حملت الدارك شيدر وفتحت اي مؤثر حتحصل اعدادات المؤثر مثلا لون الضوء ،موقع الضوء ... هذه هي constant stringالاول : كيف يمكن الحصول على قيم الـ constant string
مثلا الـ constant string للون الضوء هو LightColor
set effect constant vector EffectNumber,ConstantString,VectorNumber
مثال:
set effect constant vector 1, "LightColor", 1
set vector2 VectorResult,X,Yالثاني : ما الفرق بين Vector , vector3 , vector4 ؟
set vector3 VectorResult,X,Y,Z
set vector4 VectorResult,X,Y,Z,W
المتجه 2 يحمل قيمتان هي لمحور x,y والثالث اضافة z والرابع w "احياناً تكون هناك قيمة اضافية alpha هي لـ "w" "
واحيانا الـ القيمة الااساسية string تحمل متجه لقيمتين او 3 او 4 لهذا توجد المتجهات 1-2-3-4
صلوا على النبي صلـ اللهـ عليهـ وسلمــسبحان الله وبحمده *** سبحان الله العظيم
شكرا جدا ليك يا صديقي العزيز .. تقريبا وصلت الفكرة تمامامش ناقص غير التطبيق العمليولما اكتمل تحميل الدارك شيدر فهمت الفكرة اكترهيبدأ التطبيق العملي والتجاربوالله المستعاناشكرك بشدة مرة اخرى
كيف يمكنني صنع قائمة في لعبتي مثل بدء اللعبة و الخروج من اللعبة الخ
ولك جزيل الشكر
سبحان الله و بحمده سبحان الله العظيم