ممكن موقع يعطيك أمثلة تعليمية لبعض الألعاب
عرض للطباعة
ممكن موقع يعطيك أمثلة تعليمية لبعض الألعاب
هذا المثال عندما أعمله ل أمر تشغيل المثال يظهر لي خطأ في الصورة
[يظهر لي خطا load image "media/wall2.jpg",1كود:` #######################################################################
` DarkBasic Dungeon by Hubdule
` Shows huge dungeons
` (c) by Color Arts 2002
` #######################################################################
`set display mode 800,600,16
sync on
sync rate 0
hide mouse
backcolor=rgb(0,0,0)
backdrop on
color backdrop backcolor
cls
` Attention ... This value is the size of the map ! change it to fit your map file
mapsize=512
dim map$(mapsize,mapsize)
maxcubes=16
cubesize=200
collisionstep=int(cubesize/10)
fog on
fog color backcolor
fog distance (int(maxcubes)*cubesize)
set camera range 1,(maxcubes*cubesize)
` Current map
loadmap("media/dungeon.map",mapsize)
autocam off
load image "media/wall2.jpg",1
load image "media/ground.jpg",2
load image "media/wall.jpg",3
` Wall … you can change the walls to other objects J
for i=1 to maxcubes*maxcubes
make object cube 100+i,cubesize
` make object sphere 100+i,cubesize
` make object box 100+i,cubesize,cubesize*2,cubesize
` make object cone 100+i,cubesize
` make object cylinder 100+i,cubesize+((cubesize/100)*10)
texture object 100+i,1
next i
` floor
for i=1 to maxcubes*maxcubes
make object plain 10000+i,cubesize,cubesize
rotate object 10000+i,90,0,0
texture object 10000+i,2
next i
` ceiling
for i=1 to maxcubes*maxcubes
make object plain 20000+i,cubesize,cubesize
rotate object 20000+i,270,0,0
texture object 20000+i,3
next i
set ambient light 30
make light 1
make light 2
set point light 1,0,0,0
set spot light 2,45,90
color light 2,RGB(252,216,141)
color light 1,RGB(236,182,100)
color light 0,RGB(0,0,0)
` Search startpoint
for z=1 to mapsize
for x=1 to mapsize
if map$(x,z)="O"
cx=x*cubesize
cz=z*cubesize
endif
if map$(x,z)="U"
ex=x
ez=z
endif
next x
next zd
position camera cx,0,cz
oldpositionx#=camera position x()
oldpositionz#=camera position z()
randomize timer()
cls
do
if mouseclick()=1 then move camera maxcubes
if mouseclick()=2 then move camera maxcubes*(-1)
ry#=wrapvalue(ry#+mousemovex())
rotate camera rx#,ry#,0
cx#=int(camera position x()/cubesize)-int(maxcubes/2)
cz#=int(camera position z()/cubesize)-int(maxcubes/2)
tx#=camera position x()
tz#=camera position z()
zzz=0
for zz=1 to maxcubes
for xx=1 to maxcubes
zzz=zzz+1
curposx=int(cx#)+xx
curposz=int(cz#)+zz
if curposx<=1 then curposx=1
if curposx>=mapsize then curposx=mapsize
if curposz<=1 then curposz=1
if curposz>=mapsize then curposz=mapsize
` wall
if map$(int(curposx),int(curposz))="#" or map$(int(curposx),int(curposz))="S"
show object 100+zzz
position object 100+zzz,curposx*cubesize,0.0,curposz*cubesize
` Collisiondetection
if map$(int(curposx),int(curposz))="#"
if tx#>=((curposx*cubesize)-(cubesize/2))-collisionstep and tx#<=((curposx*cubesize)+(cubesize/2))+collisionstep and tz#>=((curposz*cubesize)-(cubesize/2))-collisionstep and tz#<=((curposz*cubesize)+(cubesize/2))+collisionstep
position camera oldpositionx#,camera position y(),oldpositionz#
oldpositionx#=camera position x()
oldpositionz#=camera position z()
endif
endif
else
hide object 100+zzz
endif
` floor
if map$(int(curposx),int(curposz))=":" or map$(int(curposx),int(curposz))="D" or map$(int(curposx),int(curposz))="S" or map$(int(curposx),int(curposz))="T"
show object 10000+zzz
position object 10000+zzz,curposx*cubesize,(cubesize/2)*(-1),curposz*cubesize
else
hide object 10000+zzz
endif
` ceiling
if map$(int(curposx),int(curposz))=":" or map$(int(curposx),int(curposz))="D" or map$(int(curposx),int(curposz))="S" or map$(int(curposx),int(curposz))="T"
show object 20000+zzz
position object 20000+zzz,curposx*cubesize,(cubesize/2),curposz*cubesize
else
hide object 20000+zzz
endif
next xx#
next yy#
oldpositionx#=camera position x()
oldpositionz#=camera position z()
position light 1,camera position x(),camera position y(),camera position z()
position light 2,camera position x(),camera position y(),camera position z()
color light 1,RGB(200+int(rnd(50)-25),120,60)
rotate light 2,camera angle x(),camera angle y(),camera angle z()
sync
loop
function loadmap(filename$,size)
open to read 1,filename$
for y=1 to size
for x=1 to size
read byte 1,tmp
map$(x,y)=chr$(tmp)
next x
next y
close file 1
endfunction
ولا أعرف لماذا
ليست عندي خبره بهذا النوع من الدارك بيسك(DarkBasic Dungeon )
فأنا أستخدم البرو........أكيد الأخ توفيق بيفيدك كثير لإنه عنده خلفيه بهذه الأشياء
أما بالنسبه للخطاء في امر تحميل الصوره أرجح الرأي إنه الصوره ليست موجوده في المسار الصحيح ليتم تحميلها للبرنامج
أم إنها ليست موجوده أصلاً !!!!
مشكلة بسيطة ... أخي تأكد من إضافة ملفات الصور إلى قسم "media" ، وحاول أن يكون مسار الملف في داخل الأمر هو نفس مسار الملف في قائمة الـ "media" مثال:
http://towfieee.com/ST_Files/images.jpg
حاولت أضيفها قبل ما أسئلك إلى media وغيرت مسارها ولكن دون جدوى ؟؟
ممكن تشوف المثال عن قرب وطبعا الصور في داخله ؟؟
المثال شغال بشكل صحيح
ليش المثال مايشتغل معاي ؟؟
لا أعلم أخي
قمت بفتح المثال وتشغيل ملف المشروع ومن ثم صنع ملف الـ EXE ، واشتغل 100 %. وهو عبارة عن حجرة يكون اللاعب بداخلها مع وجود تصادم مع الجدران. ولم أقم بتغيير أي شيء على الإطلاق.
توفي........أريد أن أفيد منك بشيء
لماذا يكون هناك حده في البيكسل في النسخه الأخيره من الدارك؟
وكيفية إزالتها إن أمكن لإنه بسببها أزلتها وأنا أعمل على النسخه 5.7
ما صارت معي هذه المشكلة ، ولست متأكداً إن كنت فهمت قصدك بـ "حدة البيكسل"
ولكن إن كنت تقصد دقة الشاشة فعلى ما أظن أنها بسبب "عدم تطابق الإعدادات من داخل الكود مع إعدادات الملف التنفيذي من قائمة settings "
ولكن إن كانت لازالت المشكلة نفسها تعترضك فلربما عليك تحديث نسخة الدايركت إكس
ومرة ثانية انا لا أعلم ما مسببات المشكلة فهي لا تحدث لي.
ولكن في حال استمرت ، حاول استخدام "shaders" للتعديل على المشهد ، ولربما يفيدك ذلك.
أعدت البحث عن السبب ووجدت بعض الأمور اللي ممكن تكون السبب وراء هذه المشكلة.
ومعناه أنهم أضافوا أبعاد أخرى للأمراقتباس:
Added new MULTISAMPLING factor to SET DISPLAY MODE W,H,D,VSYNC,MULTISAMPLING,MULTIMON
فالآن من خلال هذا الأمر يمكنك التحكم بالـ "antialiasing" وهو ما يعرف بالـ AA
بالإضافة إلى Vsync وعلى ما يبدو أنها لتقوم بالمضابقة بين عدد الفريمات في الثانية وتحديث الشاشة للصورة. فمن إعدادات الشاشة في الويندز ستجد أنها إما "60 أو 70" وبالتالي يمكنك أن تطابقها من خلال هذا الأمر.
وأيضاً إمكانية استخدام أكثر من شاشة
حتى الآن لم أجد الفرق الكبير من خلال إضافة قيم "flag" لهذه الأبعاد . ولربما أنا أقوم باستخدامها بشكل خاطئ.
العرض 1024اقتباس:
Set Display Mode 1024,768,32,1,16,0
الطول 768
العمق 32
مطابقة تحديث الشاشة on
تنعيم الكتابة "AA" بقيمة x16
تعدد الشاشات off
هذه القيم اللي أنا استخدمتها بعد ما توقعت معنى كل منها "لربما تكون صحيحة أو خاطئة".
فحتى الآن لم أجد القيم اللي ممكن نستخدمها وسأراسل القائمين على موقع TGC لأحصل على الإجابة.
ثلاثه أرباع الطرق الذي قلتها أستخدمتها لم تفي بالغرض
وجربتها سابقاً إلى شيء وهو ضبط الشيدر (تصدق إنها لم تخطر على بالي لإنني لا أستخدمه في مشاريعي البته)
مشكور
ما هو الشيدر ؟؟
مؤثرات بصرية ، وهي عبارة عن ملفات تحتوي على معادلات حسابية وعلى معلومات تساعد كرت الشاشة على إضفاء تأثير معين على المجسمات أو الصور أو حتى الكاميرات.
هي فقط توزيع العمل على معالجين بدل معالج واحد "معالج الحاسب ومعالج كرت الشاشة" وبالتالي فيمكنك الحصول على صورة جميلة وأداء سريع.
إذا أحببت هناك بعض المؤثرات الجاهزة في الرابط التالي كان "snake_x86" قد عرضه في السابق في هذا المنتدى
Ultimate Shader Pack
بداخل هذا الملف يوجد العديد من المؤثرات والأمثلة واللي ممكن تساعدك في فهم ما هي هذه الملفات.