"Kanatlarını kazanmak" için iyi oyunlar neler? [kapalı]


305

İyi bir oyun geliştiricisi olmak için oyun yapmanız gerektiğine inanıyorum.

Bir programcının bakış açısından , ellerinizi kirletmek için iyi giriş seviyesi oyunlar nelerdir? Bu oyunların her biri size hangi becerileri ve zorlukları öğretiyor?

Yanıtlar:


217

Çıkmak

Endişelenecek çok fazla durumunuz olmadığı için kolay oyun (bu bir tuğla değeri dizisidir - yalnızca bir tuğla renginiz varsa, bir bayrak dizisidir), herhangi bir AI yoktur, ve bir Topun düzgün bir şekilde sıçramasını sağlamak için biraz fizik.

Solitaire

Kurallar Breakout'tan biraz daha karmaşık ve arayüzleri çok farklı. Bir oyunu uygulamadaki farklı yöntemler hakkında düşünmeye zorlar. yani, bir oyunda işe yarayan şey, mutlaka başka bir oyunda kullanacağınız şey değildir.

Pac-Man

Bu çok hoş çünkü biraz AI üzerinde çalışacaksınız. Hayaletlerin oyuncuyu takip etmesini sağlamak (ancak çok iyi olmamak - oyuncunun şansa sahip olmasını istersiniz) hızlı bir şekilde uygulanabilir ve tweak yapıp arkadaşlarınıza ve ailenize gösterebileceğiniz eğlenceli bir oyun oynayacaksınız (olumlu geribildirim her zaman başladığınızda iyi bir şey).

Erken video oyunlarında ilham alırsanız, uygulanması nispeten basit tonlarca fikir bulabileceğinize inanıyorum. Ayrıca, süper basit resimler ve sesler ile kurtulabilirsiniz çünkü zaten çok basit bir şeyi kopyalıyorsunuz. Bu, önce temel konulara odaklanmanıza olanak tanır - oyununuzu tekrar başlatıp çalışır duruma getirin, piksellerinizi ekrana nasıl getireceğinizi, sesini çalabilir, skoru tutabilir, oyuncunun oyuna girmesini sağlayabilirsiniz.

Neredeyse ilk önce hangi oyunu seçtiğin önemli değil - sadece hızlı sonuç alabileceğiniz basit bir şey seçtiğinizden emin olun, bu şekilde ertesi gün ilerleyebilir ve bir tane daha oynayabilirsiniz. Ve başka. Ve bir başkası - ne kadar çok yaparsanız, o kadar çok kendinizi zorlarsınız ve sonunda siz bilmeden önce karmaşık oyunlar oynarsınız.


49
Breakout'ta +1. Pek çok PRO oyun geliştiricisinin bana ne zaman yeni bir teknoloji parçası alsalar ilk önce Breakout yaparak öğrendiklerini söylemiş olduk.
Jeff,

2
+1 Breakout yaptığım ilk oyundu =). Ayrıca, erken video oyunlarını yeniden yaratmaya çalışmayı kabul ediyorum (kendi bükülmelerinizle!). Varlıklara değil, kavramlara odaklanın.
user384918,

16
@PhillC, hayır, ayrılmaya değmez
Simurr

13
Tetris'i unuttun: bu ilkokulda tekrar uyguladığım ikinci oyundu :)
Emiliano

2
hepiniz ara vermelerinize link verebilir misiniz? Bu oyunu çok sevdim ve tüm
yenilikleri

256

Acemi programcıların yazmak istedikleri en basit oyunla başlamasını şiddetle tavsiye ediyorum . Matt Rix'in bahsettiği gibi, bir oyunla bir demo yazmanın büyük bir kısmı lanet şeyi tamamlamaya itiyor - krediler, menüler, oyun testi, yüksek puanlar, duraklatma, oyun testi, zorluk seviyesi, temiz oyun durumu geçişleri, oyun test etme, vb. Bu şeyler koymak için harcadığınız zamanın en az yarısını alır ve sadece eğlenceli değildir. Değil. Yani kavramı sevmiyorsanız ve gerçekten motive olmuyorsanız, oyun bir oyuna başlamadan önce pes edip devam edeceksiniz .

Bir RPG yazmak istiyorsanız, yapmak ve yapmak istediğinizle başa çıkabileceğiniz en basit, yönetilebilir RPG konseptini bulun . Bir bilim kurgu atıcı, ya da korku temalı bir platformer ya da her neyse yapmak istiyorsanız aynı. Bitireceğiniz bir şeyi seçin, eğlenceli olan her şey bittikten sonra hala bitirmek isteyeceksiniz ama gerçekte işiniz bitmeden önce hala onlarca iş saatine bakıyorsunuz.

"Kanatlarını kazanmak" için en iyi oyun? Tamamladığın kişi. Kaç tane yarım-bit PONG / Breakout / Galaga / Tetris demo yazdığınız umrumda değil, gerçek bir tamamlanmış oyun yayınlayana kadar bir oyun geliştiricisi değilsiniz.

Artı, hiç kimse bu 40 yaşındaki oyunların bir başka versiyonunu oynamak istemiyor ve en azından oyun yazma meselelerinin bir kısmı insanların oynaması için değil mi?


3
Bu cevabı oylamayı üçe katlamak istiyorum!
Iain,

2
Aslında bir oyun yayınlama hakkında yorum için +1. Bir oyunu başlatmak ve çalıştırmak, sürecin sadece% 30'u, IMO. Mekanik üzerinde sürekli yineleme, hassas görünmek için her şeyi parlatmak, sadece çok özel senaryolarda ortaya çıkan pis böcekleri kovalamak ve aslında yapılması gerekenlere odaklanabilmek diğer% 70'tir.
Dennis Munsie

1
Söylemek istediğim şeyi söylediğim için + 1. Benim ilk oyun oldu palmgadget.com/palmgo.html ben oyunu Go seviyorum ve gerçekten kaydetmek için kullanabilirsiniz, çünkü yapılabilir benim kulüp oyunlar. "Önce kendi kaşınım tırmala".
Kasım'da

16
Bu tavsiyeyi beğendim, ancak tehlikeli olabilir. Sonuçta, bu zihniyet tam da bu yüzden pek çok insanın dev forumlarına gidip "Daha önce hiç oyun yapmadım, bir MMORPG başlayacağım" demesinin nedeni budur. Sınırlı sayıda iyi başlangıç ​​projesinden oluşan bir oyuna başlamanız gerektiğini söyleyebilirim. Yani, Tetris'ten gerçekten nefret ediyorsanız, o zaman sorun yok. Ama bunun yerine Breakout yapın, sadece size hitap eden rastgele bir oyun değil.
38'de jhocking

185

Bu merdiveni bir süre önce TIGsource'ye gönderdim. Çok temelden çok karmaşaya doğru başlar.

  • "Sayıyı tahmin et" / Hangman (temel arayüz, veritabanından veri seç)
  • Tic Tac Toe / Taş-Kağıt-Makas (sıra tabanlı oyun, rakip AI)
  • Arkanoid / Pong (çarpışmalar, sabit kare hızı, puan, seviyeler)
  • Tetris (veri yapıları ve bunların oyunla olan ilişkisi)
  • 1942 / Ateş etme (düşmanlar, kurşunlar)
  • Motorunuzda platformerler varsa basit platform / langırt oyunu
  • Bombacı / Pacman (kiremit tabanlı hareket, karmaşık düşman AI)
  • Yukarıdaki türlerden herhangi birinin iki oyunculu oyunu (iki oyuncu girişi)
  • Roguelike / Diablo (Envanter yönetimi, çoklu düşman AI'ler, karmaşık oyun durumlarını kaydetme ve yükleme)
  • Faceball / Wolfenstein 3D (temel 3d hareket ve görüntü oluşturma)
  • Ağ sıra tabanlı oyun (temel ağ)
  • Gimmicky 3D üçüncü şahıs platformer (fizik, karmaşık 3d hareket)
  • Ağ gerçek zamanlı oyun (İstemci-sunucu senkronizasyonu, gecikme)
  • MMORPG (Kalıcı dünya)

7
Burada ne öğrenmen gerektiğini açıkla. Kısa notlarınız çok açıklayıcı / yardımcı değildir.
SpoonMeiser

57
Sonuncusu olmasına rağmen, MMORPG'nin daha da ileri gitmesi gerektiğini düşünüyorum. Harika bir liste. +1
は る と

6
Harika bir liste, her ne kadar tüm merdiven boyutunun Pacman'dan sonra parçalandığını düşünüyorum. Bu noktada herhangi bir oyun oynayacak kadar iyi biliyorsunuz; Wolfenstein'ı geliştirmeden önce Diablo'yu geliştirmen gerektiğini düşünmüyorum. Pacman'a kadar her şey sırayla yapmalı.
jhocking

5
"Kalıcı dünya", önceki seçeneklerin MMORPG'si arasındaki farkları ciddiyetle küçümsüyor.
Malabarba

1
"Kalıcı Dünya" yı da MMORPG olmayan bir kuruluşta da kullanabilirsiniz (örn. Bir roguelike).
ashes999

64

Oyun programlamasını öğrenmenin en önemli kuralı: programlamayı öğrenmek zordur. Oyun tasarımını öğrenmek zordur. Nasıl iyi bir oyun sanatı veya ses yapılacağını öğrenmek zor. Bunların hepsini aynı anda yapmaya çalışmak başarısızlık için bir reçetedir. Her seferinde bir şey öğrenin.

Sonuç: tasarım, sanat ve sesin yapıldığı bir oyun programlayın. Orijinal oyunlar değil klonlar yapın.

Sınıflarımda, sırayla bu oyunların başlamasını her zaman öneririm:

1) Tetris. Sanat, Microsoft Paint'te toplam klutz'un bile çizebileceği renkli dikdörtgenlerdir. Sese ihtiyacın yok. Programlama nispeten basittir, ancak yine de birkaç anahtar şey gerektirir: dahili oyun durumu ile ekranda çizilenler arasındaki farkı anlama; Ekranda çizim yapabilme, dönem (muhtemelen sprite ve blending dahil); Kullanıcı girişini, yalnızca onları beklemeniz gereken getch () veya scanf () kullanmak yerine gerçek zamanlı olarak kabul edebilmek.

2) Breakout / Arkanoid. Sanat hala renkli dikdörtgenler ve hala sese ihtiyacınız yok. Topun düzgün bir şekilde hareket etmesi ve zıplaması gerektiğinden, Tetris'in tüm temel kavramlarını, ayrıca bazı temel çarpışma algılamasını ve 2D fiziği kullanır.

3) Gradius / R Tipi. Muhtemelen bunu yapmak için bazı ücretsiz fayans setleri bulabilirsiniz. Burada arka plan kaydırılıyor, bu nedenle sayfa çevirme ve çift arabelleğe alma ve görünen ekranın sınırları dışında bir şeyler çizme gibi teknikler kullanarak grafik belleğinin nasıl çalıştığı hakkında biraz daha fazla şey öğrenmek zorundasınız. Ayrıca dinamik düşman ve mermi yumurtlama eğilimindedir, bu nedenle kendinizden sonra temizlemeyi öğrenmeniz gerekir (yani, ekranınızdaki düşmanlardan ve kurşunlardan kurtulun; böylece oyununuz bir elek gibi hafıza sızdırmaz).

4) Süper Mario Bros Önceki kaydırma projesine benzer şekilde, kaydırma dışında şu anda oyuncu kontrolü altında ve otomatik değil. Ayrıca yerçekimi ve onunla birlikte gelen tüm eğlenceli çarpışma işleriyle uğraşmak zorundasınız (zemine düşmemesi gibi, çünkü sadece son karede birkaç piksel yukarıdaydınız ve bir sonraki karede aşağıda birkaç piksele taşınmak istiyorsunuz) ). Ayrıca yerçekiminin şartlı olduğuna dikkat edin: oyuncuyu ve bazı düşmanları etkiler, ancak tipik olarak platformlardan veya yüzen paralardan veya gerçek dünyadan biraz farklı olan her neyse onu etkiler.

Bunların dördünü de yapabilirseniz, istediğiniz 2B oyunu hemen hemen yapabilmelisiniz; Bütün araçlar orada. Bir 3D oyun yapmak istiyorsanız ... önce 2D'yi öğrenin çünkü çok daha kolay ve matematiği derinlemesine anlamanıza gerek yok ve 2D şeyleri anlamanız gerekmiyor ... ve sonra bununla rahat olun, bazı temel 3B araçlarla çalışmaya başlayın (Torque veya Unity gibi kütüphaneler veya orijinal Doom ve Quake gibi açık kaynaklı oyunlar).

İyi şanslar!


39

Şimdi bu gerçek bir soru. Nerede olduğunu bilmiyorum, bu yüzden gökyüzü için sallanacağım ve hayatında asla bir kod satırı yazmadığını farz edeceğim. Burun hangi kısmını keserse, bir cümleyi kötüye kullanmak için.

Sanırım istediğinden biraz farklı bir soruya cevap vereceğim ve yerinde sorduğun soruyu cevaplamak için örnekler vereceğim. Bu şekilde yapmamın nedeni hafif ama bakış açısında önemli bir fark olduğuna inanıyorum: Bu, oyunların bir tasarımcıya getirdiği zihniyetler kadar önemli olan özel oyunlar değil.

İnsanların zihniyetlerini, kalplerini ve karaciğerlerini yemek ve böylece güçlü güçlerini kazanmak için çeşitli programlama dilleri öğrenmeniz gerektiğini nasıl konuştuğunu biliyor musunuz? Bunun gerçek bir gerçeği var - ilk saf ya da safya yakın programlama dilinizden sonra, zorunlu dillerde bile, büyük ölçüde yan etki içermeyen fonksiyonları yazmanız yeterli olacak çünkü çok daha iyi tanımlanmışlar ve yazdığınız her şey bu formda olmayan dillerde bile bunun için daha iyi olacaktır. Özellikle hangi dilin olduğu önemli değildir - haskell, ml / ocaml / smlnj, formulaONE, c ++ şablonları, her neyse - hala, yan etki durumuna dayanmadan birçok çalışma sınıfı yapmayı öğreneceksiniz. Sağlam, makineye yakın bir programlama dili ilk defa öğrendiğinizde, Boyut tipi soyutlama hakkında bilgi edineceksiniz. Bir bildirim veya kısıtlama dili ilk defa öğrendiğinizde, isteğe bağlı bir araç olarak sınırlamayı öğreneceksiniz. Geriye dönen bir arama dilini ilk kez öğrendiğinizde, dua etmeyi öğreneceksiniz! La! C'thulhu F'tagn Nagn !, ve sonra kalpleri ve karaciğerleri yemeye geri döndük ve yaşam çemberi gerçekleşti.

Oyun tasarımı farklı değil. Belirli bir dile paralel olarak herhangi bir oyunu öğrenmek zorunda değilsiniz, bunun yerine dil karakteristik aileleri gibi o zihniyeti ele alan bazı sembolik temsili oyunları öğrenmek zorunda değilsiniz. Ayrıca, pek çok yeme karaciğer ve kalbi var. Biber krakeri al.

Buradaki tıkaç (en azından gördüğüm gibi) geniş bir konu listesini ele almak istediğinizdir. Bir karakter sayfasında yetkinlikleri ortadan kaldırmak gibi bir şey - belirli bir durumla başa çıkmak için kendinize daha fazla mekanizma sağlıyorsunuz. Evet, onlar seviye yeteneğine sahipler, ancak tahtanın karşısındaki kadar bir veya iki noktaya sahip olmak, birisini kullanma zamanı geldiğinde, sıfırdan başlamayacağınız ve hangi taktiklerin kullanılabileceğini bildiğiniz anlamına gelir. ölçeklendirmen için.

Öyleyse bak.

İlk önce dişlerini kesmek istiyorsun. Bunlar, yeni bir platform hedeflemeyi öğrenirken veya amnezi durumundan kurtarırken de faydalıdır. Bunlar hızlı olmalı, harika değil.

Sırayla:

  1. Ekran kontrolü. Bluescreening bunun için harika, çünkü o zaman Microsoft olma yolunda olduğunuza inanmak için zorlayıcı bir nedeniniz var.
  2. Giriş doğrulama. Fooscreen, foo yukarı için mavi, aşağı için kırmızı, vb. Tüm anahtarlarınızı kontrol edin; yeterince renk var veya daha önemli şeyler için kıpkırmızıdan tasarruf etmeniz gerekiyorsa dört renkli haritayı görüntüleyebilirsiniz.
  3. Metin ve hareketli grafik oluşturma. Ayrıca giriş onaylamanız olduğundan, bir kiremit hafıza oyunu fena bir fikir değildir.
  4. Zamanlayıcılar. Mario klonu veya Arkanoid zamanı.
  5. Ses ve müzik Mario klonu geliştirin. Çok değil.

Bunları indirdikten sonra, bir platformu hedeflemeye hazırsınız ve öğrenme başlayabilir.

Belirli bir sıra yok. Uygun gördüğünüz gibi onları yeniden düzenleyebilirsiniz. Her birine bir avuç örnek vereceğim, ama normatif değiller; eğer farklı bir oyun size aynı deneyimi veriyorsa ve bir dizi dersin parçası olacak kadar küçükse, onu değiştirmekten çekinmeyin. Onları çok kullanacaksın. Soyutlama dersleri yazmaya başlamadan önce birkaç oyun bekleyin; Eğer yok bir naif soyutlama yakalanmış olmak istiyorum.

  • Animasyon. Neredeyse yaptığınız her şey animasyonlu sprite için çağırabilir. Programlayıcı sanatı olsa bile, kemerinizin altına bağımsız bir animasyon motoru getirin. Çini atmak yeterli olan basit bir bulmaca oyunu yapmak.
  • Karmaşık puanlama. Beş düşmanın hepsinin bir kanadında mı? Bonus. Üst üste üç yumruk atmak? Bonus. Bir mermiyi kaçırmadan tüm seviyeyi geçtin mi? Büyük ikramiye.
  • Yol bulma. Birçok oyun buna ihtiyaç duyar, ancak bir kule savunma oyunu en basit olanıdır. Daha önce hiç yapmadıysanız, ilk önce ve derinlikte önce genişliğe başlayabilirsiniz, ancak A * 'yı sıfırdan (KOPYALANMAYAN KODU) en az bir kez uygulayana kadar bitmezsiniz.
  • Düşman davranışı. Aptal otomatik davranışlar mario tarafından karşılanacak, ancak reaktif davranışlar da önemlidir. Bu, taktik bir oyun veya roguelike yapmak için iyi bir bahane. (Uyarı: hayatınızın geri kalanında roguelike çalışacaksınız.)
  • Dinamik 2d aydınlatma. Bu aynı zamanda bir roguelike yazmak için iyi bir nedendir. Ark tabanlı gölge yayın, bir çok veri yapısı için önemli olan, bantlama ve ayırmaya bakmanın önemli bir yoludur.
  • 2d Fizik. Bu, birçok oyunda, çok fazla ayrıntı düzeyinde ortaya çıkıyor. Süper basitleştirilebilen bir platform (mario-ish,) deneyin; eşit derecede basitleştirilebilen bir tank oyunu (kavisli-dünya-ish); ve sonunda, N Ninja gibi bir oyun, sizi açılar, momentum, vb. ile başa çıkabilmenizi sağlıyor (bunu eksen hizalı bir sınırlama kutusu çarpışma sistemi ile oldukça kolay bir şekilde yapabilirsiniz.) Fizik ve çarpışma oldukça yakından ilişkilidir.
  • Çarpışma algılama. Izgara Arkanoids ve Mario klonları, N Ninja gibi orta derecede karmaşık vakalar ve sandbox fizik oyunları gibi gerçekten karmaşık vakalar (inanılmaz makine, BreakQuest gibi modern arkanoidler, vb.) Gibi gülünç basit vakalar var. AABB gibi bir şey , ama eğer matematik eğilimindeyseniz, aslında eksiksiz bir şey uygulamak faydalı olabilir. En azından, APE veya Box2D gibi eksiksiz bir kütüphaneye aşina olun.
  • Oyun memnuniyetinde risk / ödül ilişkileri. Basit zar oyunları (50'lerden "Skunk" denilen bir şey için kazmaya gidin) ve riskli yol (hayat, candyland) tahta oyunları bunu yaparak öğrenmek için basit hızlı yolların harika örnekleridir.
  • Mekanikte ifade değişkenliği Kendinizi küçük kurallara uyun, daha sonra çok fazla değişiklik yapmayı öğrenin. Özel destekli kart oyunları bununla çalışmak için harika bir yol; Dvorak destelerine ve Mille Bornes, Rage ve Uno gibi gerçek dünya oyunlarına bir göz atın, sonra kendi oyununuzu kendiniz yapın. Benzer olamazlar.
  • Oluşturulan içerik. Basit harita tabanlı strateji oyunları, roguelikes ve bazı yapboz oyunları bunu yapmayı öğrenmenin harika bir yoludur. Bonus, genellikle içerik oluşturduğu için bilinen bir tür oyun değilse.
  • Stil. Etrafta canını sıkma: bu çok önemli. Bir oyun yapın, daha sonra dört tamamen farklı oyunlar olmak cilt. Gerçekten farklı. Bir çocuk oyunu bile. (Bir düşünün: Mega Man cehenneme giden büyücü bir macera veya X-Men'den Rogue gibi mükemmel bir anlam ifade ediyor.) Şimdi, oyunlarınızdan birini puanlayacak dört kişi toplayın. Ondan sonra, bir sonraki oyunu saatin tersi yönünde, yüzüğün etrafında vb. Sayılarının temaya ve önceki beklentiye göre ne kadar radikal değiştiğini farkedin.
  • Oyuncu plan dizilerini hazırlamak. Bulmaca oyunları, bu konuda gitmek için en temiz yollarından biridir.
  • Kaynak yönetimi
  • Yükseltmeler
  • Kranklama zaman basıncı

... ha. Sıkıldım.


11
Mükemmel cevap Orada gerçekten hayal kırıklığı son. Bunu tekrar ziyaret edip tutarlı bir son vermek için bir şekilde birbirine bağlayabilseydiniz harika olurdu.
Ricket,

1
Bir final için, nasıl karaciğer yemek pişirme talimatına ne dersiniz ? giantitp.com/comics/oots0738.html
Cyclops

4
Bu, oyun programlamayla ilgili bir yazı olarak fevkalade kılık değiştirilmiş bir yaşam dersidir.
sdasdadas

30

Tetris

Çok yaygın bir oyun, bir sürü açık kaynak klonlanırsa, sıkışırsanız paramparça olur. 2B grafikler, giriş işleme, puanlama vb. Temellerini öğretir.

O zaman bu orijinal fikri alın ve bir dönüşe koyun. Üniversitedeki bilgisayar grafik dersim için 3D grafiklerin / opengl'in temellerini Tetris'in bir 3D versiyonunu yazarak öğrendim .


2
Veya bir Sega adamıysanız "Sütunlar";)
Andrew Russell

Cue Tetris tema müziği ...
Nick Bedford,

3
qntm.org/hatetris (tamam, tema müziğinden yoksun, ama sadece bağlamak istedim ...)
user384918 23:10

1
@bloots vay, bu kötü
Bryan Denny


25

GameDev.net , oyun geliştirme hakkında daha fazla bilgi edinmek için oyunların ilerlemesini öneren iyi bir makaleye sahiptir . Listeden en sevdiğim tavsiyem aslında bu oyunları cilalamak. Tamamen serbest bırakılabilir bir duruma getirin.

Liste aşağıdaki gibidir (bunlardan bazıları diğer cevaplarda verilmiştir):

  1. Tetris
  2. Çıkmak
  3. Yan Kaydırıcı / Platformer

Bağlantılı makaleden Pac-Man, Galaga ve Gauntlet'i kaçırdın
Adam Harte

15

Bütün adamlarıma Monopoly ile başlamak isterim. Genellikle alıştırmanın temeli olarak Brett Schuchert'in Tekeli "code kata" kullanıyorum , ancak üzerine çok şey ekliyorum. Bunu yapmayı gerçekten sevmemin birkaç nedeni var.

  1. İyi kodlama uygulamalarına (tasarım kalıpları, TDD, SOLID, sürekli entegrasyon vb.) Çok önem veriyorum ve bu alıştırmayı yaparken geliştiricilerime birçok kısıtlama getiriyorum.

  2. Neredeyse herkes Tekel kurallarını bilir ve tüm oyun tek bir günde tamamlanabilir. Bu, yeni geliştiricilere hızlı bir kazanç sağlar ve gerçekten katılımlarını arttırır.

  3. İlk gereksinimler klavye kontrolleriyle başlar, ancak daha sonra fare kontrolleri için bir gereksinim eklerim. Bu, geliştiricilerin çeşitli şeyleri düşünmesini, mevcut kodu nasıl düzelteceğini, sistemin değişen parçalarını somut sınıflar yerine arayüzlere programlamasını, daha iyi / doğru soyutlamaları, ünite testine ne yapmayı, ünite testine ne yapmamayı, niçin ünite testini ve ne olduğunu düşünmelerini sağlar. İYİ birim testlerini yapar.

Bazen daha sofistike AI takarız, bazen yapmayız. Bazen Chutes ve Ladders gibi biraz daha karmaşık bir mantıkla diğer tahta oyunlarıyla çalışıyoruz. Bazen tahta oyunlarından tamamen koparız ve bir poker oyunu veya blackjack yaparız.

Benim için asıl önemli olan, insanların hızlı bir şekilde kazanmaları ve iyi programlama standartlarını takip ettiğinizde yazılımları ne kadar esnek yapabileceğinizi görmeleri. Bu alıştırmalar çok hızlı bir şekilde güven oluşturuyor. Bazen, daha deneyimli geliştiriciler bunları kendi başlarına yapmaktan, sadece daha karmaşık projelerden bir mola vermek veya öğrendikleri yeni bir tekniği uygulamaktan hoşlanırlar (demeter yasası?).


6
Tekel'i bir günde nasıl uygularsınız? Bundan çok daha büyük bir proje gibi görünüyor.
Michael Kristofik

Geliştiriciler için hazır sanat varlıklarına sahipseniz ve yukarıda bağlantı kurduğum kılavuzu izlerseniz, oldukça kolaydır. Birden fazla AI stratejisi veya animasyon ve müziğin daha karmaşık yönlerinden bazıları içermez, ancak tamamen oynanabilir bir oyundur ve bir günde kolayca yapılabilir. Gerçekten yapılabilir ve gerçekten çok eğlenceli.
hokiecsgrad

# 3 ayrıca, başladıktan sonra sizin için gereksinimleri değiştiren müşterilerin gerçek dünyaya deneyimini yaşatır.
Jarett Millard

Ne yazık ki Tekel bağlantısı öldü :(
Casey


15

Seç-Sizin-Macera

Bu ipucunu, bir oyun oluşturarak programlamaya başlayan bir arkadaştan aldım , macera kitabınızı tercih etmeye çok benzer . Temelde böyle bir çıktı ile basit bir metin macera oyunu:

You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _

Böyle bir oyun yapmak size bir gameloop, temel konsol girişi ve basit bir komut dosyası hazırlamayı öğretmelidir. Oyunu yazmak için bir grafik motoruna ihtiyacınız olmadığından , yeni başlayanlar için uygulanması oldukça kolaydır . Gelişmiş yeni başlayanlar muhtemelen bir komut dosyası altyapısı yazardı.


7
+1 ancak SADECE sadece programlamayı öğreniyorsanız. Programlamayı zaten biliyorsan, bununla başlamazdım.
Jeff,

1
@Jeff: Evet, eğer tam bir acemi iseniz o zaman bu başlamak için iyi bir proje. Bir süre programladıysanız, söz konusu diğer projelere gidin, böylece grafiklerle oynatabilirsiniz.
Spoike

8
Aslında, bu komut dosyası yazma ve veri odaklı geliştirme hakkında bilgi edinmek için gerçekten iyi bir yoldur. Bunun için "motor" oluşturun ve gerisini komut dosyalarına yazın.
Nick Bedford

1
@Jeff nah, eğer deneyimli programcılar ise, o zaman 2 saat içinde bitirecekler. Öyleyse birkaç eşya, kapı, patron dövüşü
eklemelerini sağlayın

13

Acemi programcılar ile olan deneyimime göre, ilerleme genellikle şöyle bir şeye benziyor:

  1. gürültü
  2. Tetris
  3. Büyük şaşırtıcı harika 50 saatlik oyun 3D RPG (not: çoğu kişi bu aşamada programlama yolundan vazgeçti)

4. Fantezi MMORPG: P
Nick Bedford

12

Breakout, Pong veya Asteroids.

Oyun ve oyun prototipi arasında çok büyük bir fark var . Hayalindeki oyunu bitirmek konusunda ciddiysen, yol boyunca "giriş seviyesi" oyunlarını bitirmelisin. Oyunun oynanış kısmını oluşturmak savaşın sadece yarısı. Menüler ve yüksek puanlar gibi tüm ekstra şeyler genellikle göz ardı edilir veya göz ardı edilir, ancak herkesin beklediğinden daha fazla zaman alır.


4
Ayrıntılardan bahsetmek için +1 beklediğinizden çok daha fazla zaman alıyor.
mpen

11

Diğer cevaplarda bazı iyi öneriler var, ama sadece oyuma atmak istiyorum: Başa çıkamayacak kadar cılız bir şeyle başla.

Pong iyi bir örnek.

Hedef, oyun tasarımını ve kuralları, o kadar beyin ölümü yapacak ki, tüm dikkatini öğrendiğin yeni şeyi öğrenmeye odaklayabileceksin (bir dil, bir platform, bir API) ve sürekli olmak zorunda değilsin. Oyunun nasıl çalıştığını anlamak için ara verin.

Bir kere gittikten sonra, pong'un ilk bakışta göründüğünden biraz daha karmaşık olduğunu göreceksiniz. (Bir erkeğe programlama öğretiyorum ve öğrenme projesi olarak pong kullanıyor. Bazı özellikler ekledik ve şimdi tüm bu harika özelliklerin nasıl yapılacağını öğrenerek öğrenmeden programa dikkatini dağıtıyor :)

Uygulama # 1'i başkalarına vermeye / satmaya hazır olana kadar baştan sona uyguladıktan sonra , biraz daha karmaşık bir şey edinmeye çalışın (Tetris, macera ya da ne istersen) ama yeni bir teknoloji öğrenmeye başlamak için beyin ölümü programladığınız şey basit.

Diğer örnekler:

  • Sayıyı tahmin et (1 ile 1000 arasında)
  • Beyni (ileri sayı tahmin.)
  • SimplePaint
  • Eğer-diyorsanız-it Yılan / solucan /.

Ancak, yine - çok kolay bir şeyle başlayın, böylece aslında bir şeyi tamamlayabilir ve geriye bakıp neyin dahil olduğunu görebilirsiniz. ONE uygulamasının bir dil / platform / SDK / motorda yazılması ile SIFIR uygulamaların yazılması arasındaki fark BÜYÜK . 1 & 2 veya 2 & 5 arasındaki fark çok daha az, böylece daha büyük adımlar atabilirsiniz, ancak 0 ila 1 adım ufacık küçük bir adım olabilir; düşündüğünden daha büyük olacak!


2
+1 "Başa çıkmak için çok cimri görünen bir şeyle başla" ve "ONE uygulaması yazmış ... ve SIFIR uygulama yazmış olmak arasındaki fark çok büyük" için
+1

1
2014 güncelleme: Bir başka iyi "dil / teknoloji öğrenmek" uygulaması bir Flappy Birdbenzer. Profesyonel bir programcı olarak, öğleden sonra yapılacak bir çalışmadır ("güzel" olması için bir hafta sonu) ama programa bir başkasını öğretirken, aslında çok fazla küçük komplikasyonları olduğunu öğrendik. Yine, kişi sıfırdan çok daha fazla deneyimdir ve bir kez sahip olduğunuzda, nasıl ilerleyeceğiniz konusunda çok daha iyi bir fikre sahip olacaksınız.
Olie

9

Bu web sitesine göz atın: 12 Bilgisayar bilimi oyunu proje fikirleri

Bu oyunlardan bazıları, başkalarının söylediklerini içeriyor:

  1. Pacman
  2. Tetris
  3. gürültü

Ama aynı zamanda, şöyle yapmayı deneyebileceğiniz diğer oyunlardan da bahseder:

  1. Tic-Tac-Toe
  2. Kim Milyoner Olmak ister?
  3. Ve bir Mario klonu.

Ayrıca, her oyun için bir zorluk hissi verdiğinden (ve dolayısıyla oyunlarla nasıl başa çıkmanız gerektiğine dair bir plan) ilk önce ne yapmanız gerektiğini bir fikir verir:

  1. Acemi
  2. Orta düzey
  3. ileri
  4. En iyi

2
+1, Bu bağlantıyı sev. "RPG - hayatınızdan nefret ediyorsanız (ve bazıları görünüşe göre yaparsa), video oyunu programlama zaferindeki bu son yıl girişiminin muhtemelen sona ermesi muhtemeldir. , vb) ve ungodly çaba gerektirir "
Cyclops

5

Birçok insan Breakout ile başlar çünkü özellikleri:

  • Giriş: bir raket ileri geri hareket ettirme
  • Basit Çarpışma: raket, tuğla ve duvardan zıplayan top
  • "Oyun Durumu:" Değiştirme Top tuğlalara çarptığında ve tuğlaları kaldırdığında puan güncelleme, top ekranın altına çarptığında top sayısının azaltılması, top sayısı == 0, vb.
  • Aynı zamanda, tüm dikdörtgen ve daireler gibi grafiklere oldukça yumuşak bir giriş

5

Oyun yazmanın ya da herhangi bir yazılımın yazılmasının en zor kısmı ne yapılacağını bulmak. Kesinlikle bir şartname ihtiyacınız var! Mevcut bir oyunun bir klonunu yapmanın eğlenceli kısmı bu: teknik özellikler zaten var. Spesifikasyonunuz "Ürün, Diğer Ürünün yaptığı her şeyi yapmalı", ve eğer diğer oyunun bir kopyasına sahipseniz, bunu doğrulamak oldukça kolaydır.

Ne yapmanız gerektiğine karar verdikten sonra , yetenekli bir programcıysanız, nasıl yapılacağını bulmak zor değil. Yetenekli veya deneyimli bir programcı demek istemiyorum; Bu, yapmaya çalıştığınız şeylerin çoğunun nasıl yapılacağını zaten bildiğiniz anlamına gelir. Fakat soyutlamalarda nasıl düşüneceğinizi anlamanız ve programlama için temel olan problem çözme ve mantıksal düşünce becerilerine sahip olmanız gerekir. Bunu yapabilirsen, her şeyi yapabilirsin.

Bunu söyledikten sonra, çoğu insanın gerçekten basit bir şey yazarak oyun yazmayı öğrenmeye çalışmakla ilgili söylediklerine katılmıyorum. Ödül, harcadığınız çaba ile doğrudan orantılıdır. Gerçekten basit bir oyun yazarak oyun yazmayı öğrenirseniz, sonunda bileceğiniz tek şey gerçekten basit oyunların nasıl yazılacağıdır ve bu size pek iyi gelmez.

Öte yandan, ezici bir şeyle başlarsanız, asla bitiremezsiniz. Bu nedenle, ciddi sorunların üstesinden gelmenizi sağlayacak orta zorlukta bir şeyle başlayın. 2B konsol tarzı bir RPG veya yandan kaydırma platformlu bir platform oluşturmak, gerçek oyun programlama kavramlarını öğrenmenin çok iyi bir yoludur.


5

Bu, şu anki yetkinliklerinizin ne olduğuna bağlı. Programlamada nispeten yeniyseniz, o zaman insanların önerdiği belirli oyunlardan biriyle gidin. Aksi halde, ne tür oyunların deneyiminizi iyi kullanmanıza izin vereceğini düşünmelisiniz.

İlk oyuna başladığımda, oyun geliştirme deneyimim sıfırdı, ancak birkaç yıldan beri kurumsal / iş kolu uygulama geliştirme yapıyorum. İlk oyun projem sıra tabanlı bir strateji oyunuydu ve mimari açıdan konuşursak, kurumsal bir uygulamadan tamamen farklı görünmüyordu. Bir istemci / sunucu sistemi kullandı ve iletişim bir dubleks WCF servis kanalı aracılığıyla gerçekleşti. Çoğu oyuncu işlemi "emir" olarak sıralandı ve dönüşün sonunda sunucuya gönderildi. Tüm sıra işlemleri sunucuda gerçekleşti ve sonrasında oyun dünyası güncellemeleri her müşteriye gönderildi.

Bu ilk proje bana tanıdık bir bölgede başlarken oyun geliştirme yolunda ilerlememe izin verdi. Proje geliştikçe, bir oyun geliştiricisi gibi daha az düşünmeyi ve daha az bir kurumsal uygulama geliştiricisi gibi düşünmeyi öğrendim. Sonuç oldukça iyi çalıştı ve Battleship ya da Tic-Tac-Toe'dan biraz daha etkileyiciydi :).


4

Uçlar ve Uzay İstilacıları

Nispeten basit AI, Grafik, Oynanış, Kontroller ve bunları eklemek istemediğiniz sürece ses efektleri veya müzik yapmak zorunda değiller. Bunu eklemek için QBasic'te MS-DOS için programlamayı öğrenirken bu ikisiyle başladım. harika ilk oyunlardır. Pac-Man benim başka seçeneğim olurdu.


Nibbles'ı daha önce hiç duymamıştım, ancak Space Invaders'da kesin oy kullandım.
35'te jhocking

3

Moonlander tarzı oyunlar harikadır (yerçekiminden etkilenen bir roket kabiliyetine sahipseniz, oyuncular yönünü ve itişini kontrol ederler, itme kullanılırken sınırlı yakıt). Çok basit fiziği uygulayan deneyim kazanın ve çarpışma sistemi oldukça ilkel olabilir. Endişelenecek AI yok ve en önemlisi eğlenceli ve bağımlılık yapıyor :)


2
Anlaştık, Thrust / Lunar Lander tarzı oyunlar harika eski projeler. Rotasyon ve hız / ivme ile uğraşmak sinüs / kosininin gizemlerini ortaya çıkarır (bir süre onlarla ilgilenmeyen herkes için). Statik veya kayan bir karo haritası kullanabilir ve çok karmaşık çarpışma yanıtlarına ihtiyaç duymadan çarpışma algılamayı kullanabilirsiniz (bir şeye dokunun -> patlayabilir). Aynı zamanda kontrol sistemi ayarlama düşünmeye için iyi bir tanesi - itme, yerçekimi ve dönme hızının güzel bir denge elde doğru hissettirmek için
bluescrn

@bluscrn aslında bu harika bir yorum. İnsanları test etmeye başladıktan sonra flash versiyonumu insanların nasıl hissetmeleri gerektiği konusunda farklı görüşleri olduğunu fark ettim. Bunlardan bazıları, kullanıcının yaşadığı önceki oyunlara bağlandı. Geliştirmeden önce özellikle düşündüğüm bir şey değildi.
Allan,

2

Galaga gibi bir yukarıdan aşağıya atıcı oldukça kolaydır ve çarpışma algılamasını oldukça iyi öğretir! Ayrıca, durağan düşmanları olan bir seviyeden, silah yükseltme ve özel kalıplarda hareket eden düşmanlara kadar çeşitli seviyelere kadar da zorluklarda değişebilir.


1

Gauntlet gibi bir şey çünkü bir varlık sistemine, düşman AI'ına, alıcılara, haritalara, çarpışma algılamasına, puanlamaya vb. İhtiyacınız var. Her şey var, ama bunaltıcı değil.


Düşman AI ve çarpışma tespitinin keyfi bir kiremit düzenine sahip olduğunu söyleyebilirim, özellikle de yapmanız gereken fiziği göz önünde bulundurarak çok az deneyime sahipseniz veya hiç tecrübeniz yoksa, oyuncu ve yer arasındaki sürtünme vb. Ancak birkaç maçtan sonra mücadele
Sean James

Kabul, biraz yeni başlayan insanlar için çok zor. Aynı anda çok fazla kavram var. Sadece puan alan ve giriş yapan bir şeyle başlayın. Sonra çarpışma tespiti ve düşmanlar gibi 1 veya 2 yeni şey yapan bir oyun yapın. Bildiğiniz kavramları temel alan, ancak bilmediğiniz bir şeyi tanıtan oyunlar toplamaya devam edin; Eğer bilmiyorsanız, denememelisiniz. Basit tut.
user384918,

Dürüst olmak gerekirse, bir Gauntlet klonunda bir "giriş seviyesi" oyunu olarak sayılmayacak kadar çok şey olduğunu düşünüyorum.
PhillC

Dürüst olmak gerekirse, Gauntlet'i Tetris'e göre kodlamanın daha kolay olduğunu düşünüyorum, çünkü bloklar birbiri üzerine yığılıyor, bir hattın nasıl tamamlanıp tamamlanmadığı ve satırların nasıl çıkarılacağı oldukça zorlu soyut problemler. Gauntlet, herhangi bir modern 2D platformda 1000'den az satırda kodlanabilir ve kullandığınız platformda bulamazsa, başka bir tane bulmanızı öneririm. Her neyse, kesinlikle önerdim çünkü modern bir oyunu oluşturan tüm parçaları öğrenmeyi gerektiriyor.
Iain,

Sesi doğru yapmak için fazladan puan alıyorsunuz: "Elf yemeği vurdu!" "Sihirbaz ölmek üzere!" ya da favorim: "TRAY-emin odamı buldun!"
rtperson,

1

Bir mini Zelda klonu iyidir ve burada çok fazla söz edilmemiş bazı becerileri uygular. Büyük bir karo haritasını ve 8 yönlü basit hareket kontrollerini kaydırmak bilmek iyidir. Bonus puanlar düşmanlar yapabilir, ancak bunun için fazla endişelenmem.


1

Birkaç Tetris klonundan daha fazlasını yaptım. Her yaptığımda, yine de biraz farklı yaptım. Bugünlerde genellikle bir tür Asteroid klonu yapıyorum. Ayrıca birkaç füze komutanlığı sızıntısından daha fazlasını yaptım.

Temel oyunla başladım ve daha çok şey, power ups vb. Eklemeye başladık.


1

Her zaman bir Tanks / Gorillas / Worms oyunuyla başlardım. Basit grafiksel ekranda egzersiz yapmanıza ve kullanıcı girdisini okumanıza ek olarak mermiye yerçekimi uygulayan ve çarpışma tespiti için test eden bir oyun döngüsü sunar.

Bundan sonra, Gorillalar için çalışan INPUT ifadeleri yerine, kullanıcı girişini gerçek zamanlı olarak okumanız gereken çok basit bir platform veya shoot-em-up gibi bir oyun olacaktı :)


1

Solitaire (veya gerçekten herhangi bir kart oyunu), kullanmanız gereken birçok widget ve denetleyici etkileşimi geri bildirim mekanizmasını kullandığından, yeni bir UI sistemiyle ellerinizi kirletmek için iyi bir oyundur. Ayrıca bunun mantığı basit ve açıktır, bu nedenle oyun tasarımı üzerinde değil, öğrenmeye konsantre olabilirsiniz.

Gerçek zamanlı simülasyon oyunları için, Pong'u her zaman iyi basit bir başlangıç ​​noktası olarak öneririm, çünkü yine de tasarım basit olduğu gibi, kontrolör arayüzü de olduğu için sistemin etine - fiziksel simülasyona erişebilirsiniz.


1

Bir oyun programcısıysanız, bir miktar Space Invaders yapabilmeniz gerektiğini öne sürdüm . Heck, oyun, kendiniz de grafik yapmak mümkün olması gerektiği kadar basit.

Portföyünüzde oldukça faydalı olmanın ek avantajı olarak küçük oyunlardan oluşan bir seçime sahip olmak, örneğin, eğer yeni bir programlama dili veya çerçevesi öğreniyorsam, çoğu zaman basit oyunlarımdan birini nasıl yeni bir yolla yapacağımı görmek için kullanacağım. şeyler yapmak, orijinalleri yazıldığı şekilde eşleşir.


1

Zaten sahip olduğunuz normal bir programcı olarak hangi becerilere sahip olduğunuza bağlı. Matematiğinizin işe ihtiyacı var mı? Grafik bilginiz? Her ikisi de sarılmış durumda mı?

Her ne kadar genel olarak Tetris ve Breakout'un benim de iki başlangıçım olacağını düşünüyorum. Bundan daha kolay olan herhangi bir şey yeterince teşvik edici değildir. Tetris, verilerinizi algo düzeninde iyi bir testtir, koparma hafif bir matematik örneğidir. İnsanlara daima yüksek hedeflemelerini söylerim, amaç sıkışıp kalmak ve bir çözüm bulmaktır.

Ondan sonra gökyüzü sınırdır. Yine, yüksek amacı. Eğimli arazi, parralax ve 2d teknolojisine sahip iyi bir çantanız var. Bir langırt ekleyin (sinirli olmaya hazırlanın) ve matematiğiniz gelişecektir.

Oradan üçüncü boyuta geçin, temel becerileri (animasyon, render) öğrenin ve çeşitli oyunlarla başa çıkmak için görece iyi bir donanıma sahip olmalısınız.


0

Kule Savunma türünde bir oyun başlamak için en iyi yer diyebilirim. Ayrıca gerekli genel mantığı anlamak için mevcut oyunları / motorları (WarCraft III / HalfLife2 SDK / vb.) Modelleyerek başlayabilir, ardından kendi kod tabanınızı kullanmaya devam edebilirsiniz.


0

İlk oyunum Süper Mario gibiydi.

Dolaşın, engellerden kaçının, zıplayın. Ve tüm bu işler herhangi bir fizik hesaplaması yapmadan kolayca yapılabilir.

Belirli bir uygulamaya / çerçeveye / motora çok fazla güvenmeyeceğiniz için basit bir 2B şey almak idealdir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.