Godot dagi birinchi o'yinim.
Salom. Ochig'i o'yin tuzishga kompyuter degan matoxni ko'rganimdan beri qiziqaman. Shu qiziqishlarim samarasi mana asta sekin chiqishni boshladi. Shu kungacha OpenGL va 3D grafika haqida o'qimagan kitoblarim qolmadi desam ham bo'ladi. Ancha tushunchaga ega bo'lgan paytimda o'rtada engine degan narsani topib oldim.
Rasmda ko'rib turganingiz Godot engine deyiladi. Bungacha OGRE, Unity3d, AndEngine va OpenGL da o'zim hammasini 0 dan yozib ishlatib ko'rgandim. Windows OS borligida Unity3d da rosa kod yozdim (oxiriga yetmagan o'yinlar :( ). Keyin orada Ubuntuga o'tdim va pythonga qiziqib qoldim. Keyin internetdan python scriptni qo'llab-quvatlaydigan engine qidirdim, ubuntu uchun. Ro'yxatlarning birinchisida Godot chiqib keldi.
Qiziqib tuzilgan o'yinlarni ko'rsam: okamstudio.com/portfolio/ va buning ustiga hali yosh va opensource ekan. Hamma taraflama ma'qul keldi. (Unity3d ni sotib olish kerak (tekin versiyasini chegaralangan)).
Hammasidan qizig'i linux uchun binar fayli 26 Mb chiqarkan + 110 Mb export templates ya'ni har xil platformalarga moslashtirib export qiladigan qo'shimcha kutubxonalar.
Albatta bu engine ni kamchiliklari juda ko'p lekin o'z navbatida shu kamchiliklardan qochqan holda ancha-buncha o'yinlarni qilsa bo'ladi. Eng asosiy kamchiligi dokumentatsiyaning to'liq yozilmaganligir. Ayrim hollarda source code ni kovlab o'zimga kerak narsalarni topganman.
Asosiy sayt: www.godotengine.org/wp/
Source code: github.com/okamstudio/godot
Documentation: github.com/okamstudio/godot/wiki
Man Ubuntu holatida yozib ketaman, manimcha Windows da ham Mac da ham xuddiy shunday ishlasa kerak. Birinchi marta ishga tushirganingizda
quyidagi oyna chiqadi. Undan «New project» ni bosib
Project path — o'yin fayllarining papkasi (/home/shranet/projects/games/moveball mani holatimda)
Project name — o'yin nomini kiritib (MoveBall mani holatimda)
Create tugmasini bosamiz. Shunda proyektlar ro'yxatiga «MoveBall» nomli proyekt ham qo'shiladi. Uni tanlab Edit tugmasini bosamiz. Shunda
oynasi chiqadi.
Izohlar:
Node — o'yindagi bitta obyekt.
Scene — Node lardan tashkil topgan o'yin sahnasi.
Inspector — tanlangan Node ning parametrlarini o'zgartiradigan oyna
FileSystem — proyekt fayllar ro'yxati
Godot asosiy talablaridan bir Sence da kamida bitta Node bo'lishi shart. Keling endi o'yin sahnasiga bitta obyekt qo'shsak. Buning uchun «Scene» oynasidan «Add/Create new Node» tugmasini bosamiz va «Node2D» ni tanlaymiz (Ctrl + S ni bosib saynani HDD ga saqlab ham qo'yamiz, monini «moveball.scn» deb ataymiz. Bu nom kerak bo'ladi).
Node2D — 2d oyin komponentlarining base (ota) node (class) i
Endi «Scene» oynasidan «Node2D» ni tanlab «F2» ni bosib, «root_node» ga o'zgartiramiz. Keyin shu «root_node» ni tanlab yana «Add/Create new Node» tugmasini bosamiz va «Sprite» ni tanlab «Open» ni bosamiz.
Sprite Node — 2d o'yinda rasm obyekt vazifasini bajaradi.
Endi «Sprite» ni tanlab, nomini «ball» ga o'zgartiramiz va shu «ball» ni tanlab «Inspector» oynasiga tushamiz. Avvalo proyekt papkasiga ball.png rasmni nusxalab tashlab, keyin oynadagi «Texture» bandini tanlab, undan «Load» ni va «ball.png» ni tanlaymiz va «Open» tugmasini bosamiz.
Agar editorga qarasangiz biz tanlagan «ball.png» ko'ringan bo'lishi kerak. Endi «Scene» oynasiga qaytib «ball» ni tanlaymiz va «Edit/Create the Node Script» tugmasini bosamiz. Shiqqan oynadagi
Path — res://moveball.gd deb yozib
«Create» tugmasini bosamiz. Shunda bizga quyidagi script ni yaratib beradi
Bu GDScript tilidir (http://www.codenix.com/gdscript.html). Ballni harakatlantirish uchun man quyidagicha o'zgartirishlar kiritdim.
Izoh:
_process(delta) — bu funksiyasi har bir frame (barcha obyektlarni chizib chiqish bomaynida) da chaqiriladi. delta parametri esa shu frame lar orasidagi vaqt.
Qolgan funksiyalar haqida
Oxirgi qadam, «F6» tugmasini bossangiz quyidagi oyna chiqishi kerak va klaviaturadan chap, o'ng strelkalarni bossangiz ball harakatlanishi kerak.
Shuning bilan qisqacha bo'lgan maqolam ham oxiriga yetdi.
Qo'chimchasiga yaqinda tugatgan o'yinimni ham qo'yaman. O'yin nomi «Ball vs ball» grafikasi juda oddiy (internetdan olingan). Lekin 99% oxiriga yetgan o'yin.
Fayllar:
Windows x86
Windows x86-64
Linux x86
Linux x86-64
data.pck
Qaysi platformaga ko'chirishingizdan qat'iy nazar, data.pck ni ham qo'shib oling. Aslida busiz ham ishlashi mumkin (test chala qilingan)
O'yin va Godot haqida savollar va takliflar bo'lsa marhamat.
Rasmda ko'rib turganingiz Godot engine deyiladi. Bungacha OGRE, Unity3d, AndEngine va OpenGL da o'zim hammasini 0 dan yozib ishlatib ko'rgandim. Windows OS borligida Unity3d da rosa kod yozdim (oxiriga yetmagan o'yinlar :( ). Keyin orada Ubuntuga o'tdim va pythonga qiziqib qoldim. Keyin internetdan python scriptni qo'llab-quvatlaydigan engine qidirdim, ubuntu uchun. Ro'yxatlarning birinchisida Godot chiqib keldi.
Qiziqib tuzilgan o'yinlarni ko'rsam: okamstudio.com/portfolio/ va buning ustiga hali yosh va opensource ekan. Hamma taraflama ma'qul keldi. (Unity3d ni sotib olish kerak (tekin versiyasini chegaralangan)).
Hammasidan qizig'i linux uchun binar fayli 26 Mb chiqarkan + 110 Mb export templates ya'ni har xil platformalarga moslashtirib export qiladigan qo'shimcha kutubxonalar.
Albatta bu engine ni kamchiliklari juda ko'p lekin o'z navbatida shu kamchiliklardan qochqan holda ancha-buncha o'yinlarni qilsa bo'ladi. Eng asosiy kamchiligi dokumentatsiyaning to'liq yozilmaganligir. Ayrim hollarda source code ni kovlab o'zimga kerak narsalarni topganman.
Asosiy sayt: www.godotengine.org/wp/
Source code: github.com/okamstudio/godot
Documentation: github.com/okamstudio/godot/wiki
Man Ubuntu holatida yozib ketaman, manimcha Windows da ham Mac da ham xuddiy shunday ishlasa kerak. Birinchi marta ishga tushirganingizda
quyidagi oyna chiqadi. Undan «New project» ni bosib
Project path — o'yin fayllarining papkasi (/home/shranet/projects/games/moveball mani holatimda)
Project name — o'yin nomini kiritib (MoveBall mani holatimda)
Create tugmasini bosamiz. Shunda proyektlar ro'yxatiga «MoveBall» nomli proyekt ham qo'shiladi. Uni tanlab Edit tugmasini bosamiz. Shunda
oynasi chiqadi.
Izohlar:
Node — o'yindagi bitta obyekt.
Scene — Node lardan tashkil topgan o'yin sahnasi.
Inspector — tanlangan Node ning parametrlarini o'zgartiradigan oyna
FileSystem — proyekt fayllar ro'yxati
Godot asosiy talablaridan bir Sence da kamida bitta Node bo'lishi shart. Keling endi o'yin sahnasiga bitta obyekt qo'shsak. Buning uchun «Scene» oynasidan «Add/Create new Node» tugmasini bosamiz va «Node2D» ni tanlaymiz (Ctrl + S ni bosib saynani HDD ga saqlab ham qo'yamiz, monini «moveball.scn» deb ataymiz. Bu nom kerak bo'ladi).
Node2D — 2d oyin komponentlarining base (ota) node (class) i
Endi «Scene» oynasidan «Node2D» ni tanlab «F2» ni bosib, «root_node» ga o'zgartiramiz. Keyin shu «root_node» ni tanlab yana «Add/Create new Node» tugmasini bosamiz va «Sprite» ni tanlab «Open» ni bosamiz.
Sprite Node — 2d o'yinda rasm obyekt vazifasini bajaradi.
Endi «Sprite» ni tanlab, nomini «ball» ga o'zgartiramiz va shu «ball» ni tanlab «Inspector» oynasiga tushamiz. Avvalo proyekt papkasiga ball.png rasmni nusxalab tashlab, keyin oynadagi «Texture» bandini tanlab, undan «Load» ni va «ball.png» ni tanlaymiz va «Open» tugmasini bosamiz.
Agar editorga qarasangiz biz tanlagan «ball.png» ko'ringan bo'lishi kerak. Endi «Scene» oynasiga qaytib «ball» ni tanlaymiz va «Edit/Create the Node Script» tugmasini bosamiz. Shiqqan oynadagi
Path — res://moveball.gd deb yozib
«Create» tugmasini bosamiz. Shunda bizga quyidagi script ni yaratib beradi
extends Sprite
# member variables here, example:
# var a=2
# var b="textvar"
func _ready():
# Initalization here
pass
Bu GDScript tilidir (http://www.codenix.com/gdscript.html). Ballni harakatlantirish uchun man quyidagicha o'zgartirishlar kiritdim.
extends Sprite
var BALL_SPEED = 300
func _process(delta):
var pos = get_pos()
if Input.is_key_pressed(KEY_LEFT):
pos.x -= BALL_SPEED * delta
if Input.is_key_pressed(KEY_RIGHT):
pos.x += BALL_SPEED * delta
if Input.is_key_pressed(KEY_DOWN):
pos.y += BALL_SPEED * delta
if Input.is_key_pressed(KEY_UP):
pos.y -= BALL_SPEED * delta
set_pos(pos)
func _ready():
set_process(true)
Izoh:
_process(delta) — bu funksiyasi har bir frame (barcha obyektlarni chizib chiqish bomaynida) da chaqiriladi. delta parametri esa shu frame lar orasidagi vaqt.
Qolgan funksiyalar haqida
Oxirgi qadam, «F6» tugmasini bossangiz quyidagi oyna chiqishi kerak va klaviaturadan chap, o'ng strelkalarni bossangiz ball harakatlanishi kerak.
Shuning bilan qisqacha bo'lgan maqolam ham oxiriga yetdi.
Qo'chimchasiga yaqinda tugatgan o'yinimni ham qo'yaman. O'yin nomi «Ball vs ball» grafikasi juda oddiy (internetdan olingan). Lekin 99% oxiriga yetgan o'yin.
Fayllar:
Windows x86
Windows x86-64
Linux x86
Linux x86-64
data.pck
Qaysi platformaga ko'chirishingizdan qat'iy nazar, data.pck ni ham qo'shib oling. Aslida busiz ham ishlashi mumkin (test chala qilingan)
O'yin va Godot haqida savollar va takliflar bo'lsa marhamat.
berib papkaga 777 berib ishlatib ko'ring.