Oyun Nasıl Yazılır?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Oyun Nasıl Yazılır?
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
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.
- uğur alkan
- Üye
- Mesajlar: 227
- Kayıt: 29 Ağu 2004 04:49
- Konum: Istanbul
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.
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.
bak burdan quake II nin delphi source nü indirip araştırabilirsin.
http://delphi.about.com/od/gameprogramm ... quake2.htm
http://delphi.about.com/od/gameprogramm ... quake2.htm
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...
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...
"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ı...
"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!!
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ı...
"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!!
BlitzBasic:
http://rapidshare.com/files/2597052/Bli ... p.rar.html
ve bu da küçük bir oyun
http://rapidshare.com/files/2597292/__3 ... s.rar.html
OpenSource (:
http://rapidshare.com/files/2597052/Bli ... p.rar.html
ve bu da küçük bir oyun
http://rapidshare.com/files/2597292/__3 ... s.rar.html
OpenSource (:
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ç
İ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ç
Re: Oyun Nasıl Yazılır?
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!
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.