Ozan Şelte
Mühendis Adayı


Godot Oyun Motoru'na Başlangıç
11 Ekim 2015 - ProgramlamaOyun Programlama

Godot Nedir?

Godot Unity3D benzeri 2 ve 3 boyutlu bir oyun motorudur. Unity3D’ye çok benzer bir tasarımı vardır. Farklı olarak GDScript adlı Python benzeri bir script dili kullanılır ve açık kaynak kodludur.

platformlar

Neden Godot?

  • Açık kaynak kodludur(MIT Lisansı)
  • Linux, OS X ve Windows destekler
  • Yazdığınız oyun kolayca diğer platformlarda çalışır:
  • Mobil: Android, iOS
  • Masaüstü: Windows, OSX, Linux
  • Playstation 3 ve Vita (Sony lisansı gerekli.)
  • Web: PNaCL
  • HTML5 ve Windows Phone ile de uyumludur fakat yapımcılar henüz stabil olmadıklarını belirtiyorlar.

Godot’a Giriş

Öncelikle Godot’un kurulması gerekiyor. Sitesinden(www.godotengine.org) kurabilirsiniz. Şimdi Godot’u açalım.

godot-projectManager

Eğer önceden projeniz varsa burada görünecektir. Herhangi bir proje indirdiyseniz Import diyerek burada görünmesini sağlayabilirsiniz. Henüz proje oluşturmadığımız için New Project diyerek devam ediyoruz.

godot-newProject

Browse diyerek projemizin klasörünü seçiyoruz.Open ve sonrasında Create diyoruz.

godot-openDirectory

Yarattığımız projemizi seçip Edit diyerek o güzel penceremizi açıyoruz.

godot-Engine

İlk Node

Şu an ana menünün içindeyiz. Sağ taraftan Scene tabını seçelim ve beyaz sayfaya tıklayarak(CTRL+A) yani Node(Türkçe: düğüm) ekleyelim. Ekleyeceğimiz nesnemizin türü RichLabelText, bunu ekrana yazı yazdırmak için kullanacağız. Nesnemizi bulalım ve Create diyelim.

godot-addNode

Oluşan nesnemize çift tıklayalım ve adını helloWorld koyalım.

godot-rename

Şimdi sağ üstteki simgeye tıklayarak Script ekleme işlemine koyulalım. Path butonu ile yeni klasör oluşturalım ve adını Scripts koyalım. Bu klasörün içinde firstScript.gd adıyla ilk scriptimizi oluşturalım.

godot-createScript

İlk Script

  • Godot kendi içinde dökümanlarını barındırıyor. F1’e basarak bu dökümanlara ulaşabilirsiniz. Bu sayede oyun motorunun içindeki tüm fonkisonlara açıklamalarıyla birlikte ulaşabiliyoruz.
  • Eğer Python bilginiz yoksa daha önce oluşturduğum Türkçe Python Dersleri istesi ile kendinizi geliştirebilirsiniz.

Proje çalıştığında başlatılacak olan fonksiyon _ready fonksiyonudur. Kodu yazıp CTRL+ALT+S ile scripti kaydediyor sonra CTRL+S diyoruz. Proje klasörümüze, ki bu klasör Scripts klasörümüzün üst klasörü oluyor, geçiyor ve mainScene.scn adıyla ilk sahnemizi kaydediyoruz.

1
2
3
4
5
extends RichTextLabel

func _ready():
	self.add_text("Hello, World!");
	pass

godot-saveScene

Kaydettiğimize göre şimdi oyun motorumuza projemizin mainScene adlı sahne ile başlayacağını belirtmemiz gerekiyor. Scene » Project Settings yolunu izliyoruz. main_scene değerini karşısındaki tuş ile değiştiriyoruz ve mainScene.scn dosyamızı seçiyoruz.

godot-settings

Yukarıdaki başlatma tuşuyla(F5) birlikte projemizi çalıştırıyoruz.

godot-startProject

Menümüzden 2D tabına geçiyor ve helloWorld nesnemizi seçiyoruz. Kırmızı bir çerveme ile beliriyor bunu istediğimiz gibi boyutlandırabiliriz. Boyutlandırma Inspector sekmesinin Margin ve Rect bölümlerinden incelenebilir.

Font Eklemek

Sol üstten Import » Font yolunu izliyoruz. Fontumuzu seçip boyutlandırmamızı yapıyoruz, Fonts/firstFont.fnt adını veriyoruz ve Import tuşuyla projemize ekliyoruz.

godot-addFont

helloWorld düğümümüzün Inspector sekmesinden Custom Fonts » Normal Font değerini Load tuşu ile değiştiriyoruz ve yeni fontumuzu seçiyoruz. F5’e bastımızda değişiklik hemen belli oluyor.

godot-helloWorldFont

Zamanlayıcı Kullanmak

Zamanalayıcı(Timer) oyunlarda son derece sık kullanılan bir araçtır. Var olan projemize kolayca dahil edeceğiz. Hemen Create Node diyerek Timer ekliyoruz. Zamanlayıcımızın Inspector sekmesindeki Wait Time değeri saniye cinsinden bir değerdir ve bu değer zamanlayıcı fonksiyonumuzun hangi sıklıkla çalışacağını belirtir.Autostart değeri ise proje başladığında saymaya hemen başlayıp başlamamasına karar verir, hemen tik koyuyoruz.

godot-timerSettings

Sağ üstteki Edit the Node Connections tuşuna basıyoruz. timeout()’u seçiyoruz ve Connect diyoruz. helloWorld seçili iken tekrar Connect’e tıklayarak işlemi bitiriyoruz. _on_Timer_2_timeout() fonksiyonunu zamanlayıcımızın belirttiğimiz sıklıkla çalıştıracağı fonksiyon yaptık. İyi kötü yorumlarınızı ve gelecek yazılardan isteklerinizi bekliyorum. Okuduğunuz için teşekkürler.

1
2
3
4
5
6
7
8
9
10
11
12
13
extends RichTextLabel

var saniye = 0

func _ready():
	self.add_text("Merhaba Dünya!");
	pass

func _on_Timer_2_timeout():
	saniye += 1
	self.clear()
	self.add_text(str(saniye, " saniye geçti."))
	pass

godot-countSeconds