Oyun Nasıl Yazılır?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Omers
Üye
Mesajlar: 14
Kayıt: 21 Eki 2006 05:51
Konum: Bursa

Oyun Nasıl Yazılır?

Mesaj gönderen Omers »

Herkeslere kolay gelsin... benim sorum biraz farklı olucak... Ben meslek lisesi ogrencisiyim ve yaklasık 2 yıldır programlamayla ugrasıyorum... programcılıgı ısteyerek yaptıgımdan surekli kendimi gelistiriyorum. Bu iki yıl icinde baya bisey(kendimce) ogrendım. ama sunu soylemek ıstıyorum yapabıldıgım tek sey hesaplama programları. ve son zamanlarda 2 boyutlu oyunlar(aslında resimlerin hareket etmesi :? )... benim ogrenmek istedigim oyun mantıgı nasıl yapılıyor. Yani dürüst olmak gerekirse Dos zamanın en iyi oyunlarından Prince of Persia (daha renkler bile yokken) nın benzeri bir oyunu yapmak bile benim için imkansız(suan). Fakat adamlar o zamanlarda bu oyunu nasıl yapmıslar. O cocugun kosması durması hareketleri bunlar surekli benim merak konum olmustur. Ama bir turlu anlayabilmis degilim. Sunu soyliyim yaklasık 14 yıldır bilgisayar kullanıyorum ve gercekten donanım konusunda cok iyi bilgi birikimim ve tecrubem vardır ama programcılık cok baska bisey. pascal da kullandım visual basic de kullandım delphi de kullandım. Bu programlarda istediginiz programları (hesaplama turu) yapabilirim en azından (kodları bilmesemde)mantık gelistirebilirim, ama su oyunlara bi mantık gelistirebilmis degilim... Biri bana anlatabilir mi? yada anlatılacak biyere yonledirebilir mi?

bunlarla ilgili dokumanda olabilir(forum olsa daha iyi)...
Umarım derdimi anlatabilmisimdir... Saygılar...

Girişimci Gençlere Yardım Edin :!: :?:

Not: İngilizce problemim yok. belgeler ing de olabilir...
mail atmak isteyen olursa : omershalits@hotmail.com
En son Omers tarafından 04 Kas 2006 09:17 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

Konu başlığını düzelterek bu işe başlayabilirsin

Mesela "Oyun Nasıl Yazılır" Diye Sorabilirsin


DelphiForm başka formlara benzemez
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

formda arama yaparak bikaç konuya oluşabilrsin..bu formdamıydı nerdeydi bilmiyorum ama Quake II nin delphi kodları vardı bendede vardı bulursam gönderirim.
sanırım mantığı şu nasıl windows api leri ile donanımlara veya işletim sistemine işlemler yaptırabiliyorsak ordada directx veya opengl kütüphanelerini kullanarak bişeyler yapılıyor.ayrıca oyun yapmak için delphinin iyi olması kadar modelleme bilginin ve teknik resmininde iyi olması lazım.Birde bazı oyunların kendi programlama dilleri oluşturulmuş.(yani quake motoru,Medal of honor motoru dedikleri şey) bunları milyon dolar ücret ödeyerek alıp kendi oyununu programlayabilirsin. :lol:
Kullanıcı avatarı
Merchant
Üye
Mesajlar: 102
Kayıt: 17 Eki 2006 01:51

Mesaj gönderen Merchant »

serkan yazdı:quake motoru,Medal of honor motoru dedikleri şey bunları milyon dolar ücret ödeyerek alıp kendi oyununu programlayabilirsin. :lol:
Hiç güleceğim yoktu. :lol:
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

bak burdan quake II nin delphi source nü indirip araştırabilirsin.

http://delphi.about.com/od/gameprogramm ... quake2.htm
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Selam.

Oyun yazmaya başlamak için, mantığı öğrenmek için BlitzBasic iyi bir seçim olur. Eskiden 2 boyutlu oyun yazılabilen kısıtlamasız versiyonu vardı. Şimdi 3 boyutlu versiyonunu kısıtlamalı dağıtılıyor, istersen 2 boyutlusunu verebilirim.

İçinde bol bol örnek var. İlgilenirsen kendi kodlarımın bir kısmını da paylaşabilirim.

Kolay gele...
Kullanıcı avatarı
Omers
Üye
Mesajlar: 14
Kayıt: 21 Eki 2006 05:51
Konum: Bursa

Mesaj gönderen Omers »

"bak burdan quake II nin delphi source nü indirip araştırabilirsin.

http://delphi.about.com/od/gameprogramm ... quake2.htm
"

Quake kodlarını indirdim, Sag ol... hem agır bi' dil hem de C(delphi kadar bilmiyorum) oldugundan pek anlayamadım, ama kafamda bi'seyler canlandı. Yakında cozerim ins. bu kodları... :roll:


"Selam.

Oyun yazmaya başlamak için, mantığı öğrenmek için BlitzBasic iyi bir seçim olur. Eskiden 2 boyutlu oyun yazılabilen kısıtlamasız versiyonu vardı. Şimdi 3 boyutlu versiyonunu kısıtlamalı dağıtılıyor, istersen 2 boyutlusunu verebilirim.

İçinde bol bol örnek var. İlgilenirsen kendi kodlarımın bir kısmını da paylaşabilirim.

Kolay gele...
"

Gerçekten çok iyi olur... Daha once iki boyutlu oyunlar yapmıstım ama cok kalıtelı degıldı...

Bide gecenlerde "Delphi_3D_Developer_Studio6" ve "3D_WorldBuilder60WR" diye 2 program indirdim. 3 boyutlu oyun falan yapmayı gosterıyodu. biraz kurcaladım fena degıldı. eskiden ve yeni yapılmıs 3d seyler vardı. bu programlar hakkında biseyler biliyor musunuz?
Simdiden sagolun... ins okuldaki son senemde guzel bi' oyun yazarım!! :)
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Kullanıcı avatarı
Opt2000
Üye
Mesajlar: 216
Kayıt: 09 Tem 2003 10:04

Mesaj gönderen Opt2000 »

Selam,

İyi bir oyun yazmak istiyorsan, öncelikle programlama dilini değiştirmelisin. Mutlaka C++ gibi bir dil kullanmalısın. Nedeni de çok basit, artık oyun yazımı "hadi arkadaşlar, başlayın" şeklinde değil. Oyunu normal bir program gibi düşün ve bu program da bir çok kütüphanelerin bir araya gelmesinden oluşuyor. Bu kütüphanelerin neredeyse hepsi C++ ile yazılmıştır. Bu yüzden de Delphi arabirimine sahip yeterli kütüphane bulamazsın.

Kütüphaneler neler:
- Grafik Engine (2D veya 3D, ben 3D gibi düşüneceğim)
- Animasyon Engine
- Audio Engine
- Network Engine
- Yapay Zeka (Grup hareketleri, Path Finding vs gibi.)
- Environment Kütüphaneleri (Ağaç vs)
- Fizik engine

Bu listede aklıma gelmeyen kütüphaneler de olabilir. Bazı grafik kütüphaneleri aynı zamanda diğer kütüphanelere de destek verebilir (örneğin kısmi animasyon desteği, fizik motoru desteği gibi). Bütün bu kütüphaneler için açık kaynak kodlu projeler bulabileceğin gibi, çok ucuz projeler de bulabilirsin.

Her ne olursa olsun, eğer tek başına oyun yazacaksan, mutlaka OpenGL veya DirectX hakkında iyi derecede bilgin olması gerekir. Ayrıca animasyonun temel mantığını da bilmen gerekiyor. Yapay zeka denilen şey sonuçta mümkün olduğu kadar çok olasılık hesaplamadan ibaret. Tabii bilgisayar tarafından kontrol edilen bir karakterin, düşmanı (yani oyuncuyu) takip etmesi için de bir yöntem geliştirmen gerekecek. Bu da yapay zekaya giriyor. Tabii bütün bu işlemler için iyi seviyede matematik bilmen gerekiyor. Basit bir örnek: Bilgisayar tarafından yönetilen oyuncu ateş edecek, ama düşmanı görüp görmediğini anlaması için, kendi bulunduğu noktadan, düşmanın bulunduğu noktaya bir doğru çekmelisin. Eğer bu doğru herhangi bir düzlemle kesişmeden ulaşıyorsa sorun yok (Dikkat et sürekli 2 boyutlu matrislerle uğraşıyorsun), ulaşmıyorsa boşa mermi harcatmayacaksın. Animasyon yönetimi de zordur, çünkü hareketler mümkün olduğu kadar loop olacak, bu yüzden de bir hareketten diğer harekete geçerken (eğer bir animasyon kütüphanesi kullanmıyorsan) poligonlar arası geçişi (blending) kendin kodlamak zorunda kalacaksın. Bütün bunlar çok ciddi tasarım gerektiriyor. Ayrıca ufak bir hatırlatma daha. Yazacağın kodlar çok iyi optimize edilmiş olması gerekiyor. Örneğin C'deki STL (Standart Template Library) kütüphaneleri hızlı olarak bilinir, ama oyun yazmak için yavaştır. Ya kendin yazacaksın, ya da çok daha yüksek performanslı kütüphaneleri kullanacaksın (boost gibi).

Sonuç olarak oyun yazmak, can sıkıntısından program yazmaya, hele de veri tabanı programları yazmaya hiç benzemez. Çok ciddi emek ve zaman ister.

Sana tavsiyem ilk etapta oyun yazmayı unut, onun yerine önce ileri seviye C, C++ öğren. Daha sonra işe OpenGL ve DirectX ile devam et. Bu sırada da grafik, animasyon ve 3D bilgini geliştir (bunlarla ilgili uzman olmana gerek yok, sadece fikrin olsun yeter). Oyun yazmaya daha sonra başla, ama ondan önce de bu işin teoriği ile ilgili kitaplar var (Türkiye'de bulunmuyorlar, internetten indirebilirsin, ya da Amazon'dan sipariş ederek edinebilirsin), bu kitaplar hem management ile ilgili, hem de algoritmalarla ilgili, bunları mutlaka oku.

Biraz karamsar ve kötü bir tablo çizmiş olabilirim, ama gerçekçi olmakta fayda var. Bu bahsettiği yolu izlemek zor, ama inan bana aynı zamanda çok da eğlencelidir. Elbette bahsettiklerimi izlemeden de oyun yazabilirsin, ama asla profesyonel ve yüksek (genelin biraz üstü demek istiyorum) kalitede bir oyun olmaz.

Kolay gelsin,
Bahadır Alkaç
Furiall52
Üye
Mesajlar: 2
Kayıt: 27 Haz 2023 02:30

Re: Oyun Nasıl Yazılır?

Mesaj gönderen Furiall52 »

Merhaba, sorunun gerçekten güzel ve detaylı olmuş, tebrik ederim. 😊 Oyun geliştirme konusundaki merakını çok iyi anlıyorum, çünkü programcılığın en keyifli alanlarından biri.

Oyun mantığını anlamak için ilk başta şu temel kavramlara odaklanman iyi olur:

Oyun Döngüsü (Game Loop):
Oyunlar genelde sürekli çalışan bir döngüye dayanır. Bu döngü, oyunun her karede (frame) neler yapacağını belirler:

Kullanıcı girişlerini almak (klavye, fare, vb.)
Oyun mekaniğini güncellemek (karakterin hareketi, düşmanların pozisyonu vb.)
Ekrana görüntü çizmek (rendering).
Karakter Hareketi ve Animasyon:
Prince of Persia gibi oyunlarda animasyonlar, kare kare çizilmiş sprite’larla yapılır. Örneğin, bir karakterin koşma animasyonu 8 farklı pozdan oluşuyorsa, her karede farklı bir poz ekrana çizilir. Bu, oyunun akıcı görünmesini sağlar.

Fizik ve Çarpışma (Collision Detection):
Karakterin zıplaması, düşmesi veya bir objeye çarpması gibi durumlar, temel fizik hesaplamaları ve çarpışma algılama algoritmalarıyla yapılır.

Basit Bir Oyun Motoru Kullanımı:
Oyun mantığını sıfırdan anlamak için basit bir oyun motoru veya framework kullanabilirsin. Örneğin:

Pygame (Python): Yeni başlayanlar için çok uygun ve 2D oyunlar için ideal.
Godot Engine: Ücretsiz ve kullanıcı dostu bir oyun motoru.
Küçük Projelerle Başla:
İlk hedeflerin çok basit olabilir: bir topun ekranda sağa sola hareket etmesi, bir nesnenin bir engelle çarpışması gibi. Bu projeler, oyun mekaniği mantığını anlamanı sağlayacak.

Son olarak, Prince of Persia gibi oyunların zamanında nasıl yapıldığını merak ediyorsan, internette "Prince of Persia Source Code" araması yapabilirsin. Bu oyunun kaynak kodları yayınlandı ve incelenebiliyor. Kodları incelemek çok öğretici olabilir!
Counter-strike oyununun hayranı. Ayrıca silah kaplamaları toplamayı da seviyorum. En iyilerini elde etmek için cs2 skin deği̇şti̇ri̇ci̇ platformunda kasa açıyorum. Rahatlamanıza yardımcı olur.
Cevapla