Genç bir oyun programcısı için iyi bir başlangıç ​​platformu nedir? [kapalı]


32

Oğlum (15), bir oyun programcısı olarak kariyer yapmak istediğine karar verdi. Şimdi basit bir oyuna başlaması gerektiğini söyledim. Henüz bir programlama tecrübesi yok, ama ben bir programcıyım (iş uygulamaları, oyun değil) bu yüzden ona programlamayı öğretebilirim, ancak başlaması için iyi bir platform ne olabilir? Başlangıçta coşkusunu devam ettirmek için hızlı sonuç verebilecek bir şey arıyorum.

Ne öneriyorsun?


13
Kapalı? Şaka yapıyor olmalısın! Bu soruyu son bir yıl önce sordum, en az 19 oy almış, en çok oy alan yanıtları en az 86 oy almış, 5 kişi favori seçmiş. Ve cevaplar gerçekleri, referansları veya belirli bir uzmanlığı içerir. Son olarak, bu benim için inanılmaz derecede faydalı oldu ve başkalarına da önerebilirim. Bu karara nasıl itiraz edebilirim?
gkrogers

1
Gerçekten istersen bu konuda metada bir yazı yapabilirsin. meta.gamedev.stackexchange.com
Tetrad

Yanıtlar:


30

XNA oldukça güvenli bir programcı için iyi bir çözümdür. Gelecekte amaç için iyi bir hedef olacaktır.

Unreal Development Kit çok daha hızlı ve kolay bir sonuç almak için bir yoldur ve başlamak için iyi bir yer olabilir. Yorumlar, UDK'nın aslında oldukça kötü bir alternatif olduğunu belirtti, bu yüzden bunu öneremem .

Birlik bir alternatiftir, UDK'nın yapamayacağı bir şey olan telefonlarda çalışacaktır (bildiğim kadarıyla). Yani telefonlar için oyun programlamaya girerse, belki birlik daha iyi olur mu?


4
Buna katılıyorum. Birlik UDK'ya bir alternatiftir, ancak anlaşılması biraz zor. Bir UnrealScript (Unreal Development Kit'in betik dili) ile uğraşmasını sağlayabilecek misin bir bak. XNA kesinlikle kullanması gereken en baştan sıfırdan oyun programlama dili; bu en kolayıdır (göreceli olarak konuşur; mutlak yeni başlayanlar için değil) ve prototip oluşturmayı çok seviyorum çünkü ekrandakileri hızlı bir şekilde çizmeye başlayabilirsiniz.
Ricket

2
XNA önerisi için +1. İyi öğrenmek için çabalıyorsa ve iyi fikirleri varsa, Zune / WP7 / XBOX 360 için oyun para harcamaktan kolayca kazanabilir.

2
Birlik iPhone'da ve tarayıcıda çalışır, bu yüzden oyunu test etmek ve erken alevlenmeye alışmak için oyunu dağıtmak için iyi bir yoldur
Chris S

4
UDK'dan kaçının. Çok güçlü olabilir, ama aynı zamanda büyük bir acı. "Gotches" ve belgesiz kısıtlamalarla doludur.
Peter Ølsted

4
Ben de 15 yaşındayım, önce pascal, sonra C, sonra C ++. Bazı oyunları C ++ ve allegro'da 12 + 'da programlamaya çalıştım - çok başarılı değildim, pek çok şey yapabilirdim, ama bütün bir oyunun nasıl kurulacağını düşünemedim. Bu beni ayakta tuttu. XNA ile işler çok daha kolaydı ve ayrıca hata ayıklama zamanında gösterilen C # istisnalarının kolay hata işlemesi nerede yanlış bir şey yaptığınızı bilmenize yardımcı oluyor. Tabii ki, başka diller de var, ama Visual C # etrafında en iyi hata ayıklama aracına sahip olduğunu düşünüyorum.
Gustavo Maciel

20

Ben de 15 yaşındayım, bu yüzden yardımcı olabilir sanırım? : P

Geçenlerde Python'u öğrenmeye başladım (bir yıldır C ++ yapıyoruz) ve öğrenmeyi C ++ 'dan çok daha kolay buluyorum. Daha az tuzak var ve ekranda bir şey elde etmek için küçük bir koda ihtiyacınız var - bulduklarım devam etmenizi istiyor.

Ayrıca grafik tarafı için SDL / OpenGL üzerinden Pygame ve Pyglet gibi sarmalayıcılar var.

Basit oyunlar yapmaya başlamadan önce, en az birkaç ay boyunca bir dil öğrenmenizi tavsiye ederim. (Tabii ki, sayı ve cellat gibi metin tabanlı oyunlar bu süre zarfında iyi egzersizlerdir sanırım)


9
Python ve Pygame, uzun yıllar C'deki oyunları yazdıktan sonra bana taze bir soluk verdi. Python'daki zamanın yaklaşık% 10'unda aynı şeyi yapabileceğimi düşündüm, çünkü her şeyin üst seviyesi.
dash-tom-bang

Biliyorum, aynı hissediyorum (ve bir yıldır C ++ yapıyorum).
Komünist Ördek

+1. Söylemeliyim ki, Python'u sadece biraz tanıdık olmasına rağmen, programcılara başlangıç ​​için ilk tavsiyem. Şimdi sadece bir piton robotuna ihtiyacımız var! Ayrıca cellat için iyi öneriler. =)
05:

Dostum bir .net dilini öğrenmelisin (C #, F # çok değil, vb.net iyi. Boo. Görsel stüdyolarda desteklenmiyor :(). Diller C + 'dan daha az eğilimlidir ve bir şey yaptığınızda istisnalar alırsınız yanlış (çok iyi bir şey. C ++ bundan daha fazlasını yapmalı) Ve çağrı yığınını kullanmayı, değişkenleri izlemeyi, kesme noktalarını (kesme noktalarını bir python IDE'de çalıştığını sanıyorum?) ve hızlı bir şekilde hata ayıklamayı öğrenebilirsiniz.

13

Burada alışılmışın dışında bir cevap biraz:

Starcraft II Galaxy Editör.

Starcraft 2 içerisinde neredeyse her oyunu yapabilirsiniz.

Ayrıca döngü gibi programlama yapıları ve eğer ifadeleri GUI merkezli bir şekilde öğretir.

Temel bilgilere güvendiğinde, ona senaryo yazdırabilirsin.

Eğer bu konuda iyiyse ve bunu ilginç bulursa, uygun oyun programlamasını sevecektir.


3
Warcraft III'ü önermek üzereydim. Basit bir betik dilinde başlamak gerçekten güzel bir yöntem. Hem Warcraft III hem de Starcraft II, rahat etmek için kullanabileceğiniz bir GUI'ye ve iç işleri görmek için kodu ham komut dosyası olarak görüntüleme işlevine sahiptir.
William Mariager

2
Doğru parça . HERHANGİ bir seviye editörüyle başlamak, gitmenin en iyi yoludur. Tüm iskeleyi ve zorluğu atlayabilir ve bir senaryo örmenin ve bir seviye tasarlamanın ilginç kısmına katılabilir.
bobobobo

Bu tür bir soru için şimdiye kadar gördüğüm en iyi cevaplardan biriyle, MS powerpoint ile köprüler arasında çok küçükken ve "robot kulübü" adlı bir oyun oynarken ilk önce oyun yapmaya başladım; oynanışında size programlama temellerinin birçoğunu öğreten giantbomb.com/the-robot-club/3030-29776
Jim Jones

10

Oyun geliştirme araçlarını kabaca üç geniş kategoriye ayırırdım:

  1. Öğrenmesi ve kullanması kolay, ancak sınırlı. Oyun Makinesi, Oyun Salatası, RPG Makinesi, Macera Oyun Stüdyosu hepsi bu kategoriye girer.
  2. Güçlü, ama dik bir öğrenme eğrisi ile. C ++ ve diğer "hardcore" programlama dilleri buraya sığmaktadır.
  3. Orta diller, genellikle Lua, Python ve ActionScript gibi betik dilleri, aslında bir kod yazmanızı zorunlu kılarak ancak sizin için bellek yönetimi gibi daha belirsiz ayrıntılara dikkat ederek aradaki farkları ayıran dillerdir.

Programlama deneyimi olmayan kişiler için, genellikle bir şeyler yapmaya başlamak için ilk kategoride başlamalarını öneririm. Belirli bir yazarlık aracıyla kendilerini rahat hissederlerken, sınırlamalar yararları ağır basıyor gibi hissetmeye başladıklarında, bir sonraki kategoride bir şeyler öğrenme zamanı gelmiştir.


9

Bunun bana bir şekilde çıkacağını biliyorum ama büyüyünce P-Robots'tan gerçekten zevk aldım . Gerçekten basit bir amaç (diğer robotları yenmek), basit bir API ve kod değişiklikleri ile sonuçları görmek arasında kısa bir süre var. AI, tasarım desenleri ve hatta daha büyük ölçekli kod yapıları (bu robotların bazıları oldukça büyüyebilir - peki ya robotlar arasında kod paylaşımı). Benzer bir şey bulursanız, ancak daha yeni bir şey "başlarken programlamaya" başlamanın en iyi yoludur. Öneriler:

Bir kez bittiğinde, gerçekten basit bir 2D kaydırma atıcı, platformer veya benzeri bir "arcade tarzı" oyun yapmayı düşünün - SDL veya XNA'yı veya en çok tanıdık olanı kullanabilirsiniz. Bir pong klonu kurmak ve bunları çalıştırmak bile tamamen önemsiz değildir . Bu, size "topraklanmış" bir şey inşa etmenin nasıl bir şey olduğunu gösteren küçük bir yankı verir.

Bundan sonra, keşif: daha büyük motorlara biraz fikir vermek için mevcut bir 3d oyuna bir mod (yeni bir nesne veya bot veya başka bir şey).

Gördüğüm kadarıyla anahtarlar:

  • hızlı yineleme: sonuçları hızlıca görebilme
  • prototipler: geniş kapsamlı tecrübe ve güven elde etmek için birçok küçük deney (tamam, mermer oyunu nasıl yapalım? alan işgalcileri nasıl olur? vb.)
  • keşif: diğer insanların oyunlarının nasıl inşa edildiğine bakarak sevmeyi öğrenmek

2
Fırtına için +1, ancak P-Robots yerine ROBOCODE ( robocode.sourceforge.net ) kullanırdım.
Callum Rogers,

@Callum: brilliant, cevabı güncelleyecektir =)
leander

LegoMindstorms'u NXC ile kullanırdım
Joe The Person

6

Tavsiyem web tabanlı oyunlar yapmak. Niye ya? Öncelikle, JavaScript ona programlamanın tüm temel kavramlarını öğretecek güzel bir dildir ve aslında onunla harika, yetkin ve platformlar arası bir oyun oynayabilirsiniz. Aynı zamanda onu sadece oyun yapmaktan başka bir şey için de nitelendiriyor ... Bir nedenden ötürü oğlunuzun web gelişimine girmesini istemiyorsanız, PyGon'u PyGame adlı bir modülle kullanmanızı öneririm. Ayrıca bununla ilgili tecrübem var ve harika. Ne yok önermek yaptım ve bu korkunç ve ona tamamen programlama için motivesiz olsun edebilir² C / C ++ ile başlayan olduğunu.

Başka bir kayda göre, muhtemelen harika bir babasın, tebrikler!


1
İyi öneriler. Bu, C ile başladım (o zamanlar gerçek alternatifler yoktu) ve gerçekten çok acı verici değildi; Tabii ki, şimdi bunu kullanmak için bir neden değil, daha yüksek seviyeli diller var.
'.

1
Teşekkürler! Ayrıca oyunlarla başlamamıştım ve demek istediğim, yüksek seviye bir dil öğrendikten sonra genel programlama kavramını daha iyi anlayacağı ve motivasyonunu daha da azaltamayacağıydı. Ve tabi ki - orada biraz abartıyordum;)
jcora

1
Bu yaşta, yarattıklarımı kolayca arkadaşlarımla paylaşabilmek bir motivasyon oldu. Web oyunları daha kolay paylaşılır. URL’nizi Facebook’a gönderir ve arkadaşlarınızın denemesini istersiniz. Actionscript / Flash veya Javascript / HTML5 muhtemelen yakın bir zamanda, Java ya da Unity ile kolayca paylaşabilmek için en iyi bahisleriniz.
sabah

5

Zihin Fırtınası Roboter gerçekten harika. Okulda bazı NXT'lerimiz var ve geçen hafta bir çizgiyi takip et ve onun gibi şeyleri programlamaya başladık. Kolayca sonuç alabilirsiniz.

Ayrıca bir süre önce www.3dgamestudio.de adresini buldum. Daha fazlasını anlamadım, ama gerçekten ilginçti. Aşağıdaki gibi lite-C ile programlayabilirsiniz:

Lite-C multimedya uygulamaları ve bilgisayar oyunları için C programlama dilinin bazı unsurları ile C programlama dilinin bir sözdizimi altkümesini kullanan bir programlama dilidir.

At http://tutorial.3dgamestudio.net/ bunu içine almak. Ayrıca bir seviye, model ve arazi Düzenleyicisi de bulunmaktadır.

ps: 16 yaşındayım ve bir web sitesini programlayan ve programlanmış bir oyun sunucusunu özelleştiren bir arkadaşımla başladım. Yani bu onun için de ilginç olabilir.


+1 Çok kolay dokümantasyon nasıl yapılır, başa çıkmak çok kolay görünüyor.
Prix

4

Bunu yeterince öneremem ama en sevdiği oyun için kendi seviyelerini inşa etmek .

Bu yaş / beceri seviyesindeki bir kişi için, tercih ettikleri oyun motorunda seviye oluşturarak başlamalıdır .

Birçok harika oyun, birçok serbestlik derecesine izin veren bir seviye editörü ile birlikte gelir.

RPG : Obsidyenin NWN 2 elektron araç takımı serisi , Elder scrolls

RTS : Warcraft III 'ın seviye editörü fantastik RTS editörü ve hatta ise kendi kapalı bükülmüş olan oyun ( efsanelerin lig ve Newerth kahramanları ).

FPS'ler :Yarı ömür 2 için çekiç 2. Counterstrike , aslında yarı ömür moduydu.

Buradan başla . Favori oyununuz için bina katları başlamak için muhtemelen en iyi yer.



3

Buradaki tüm bilgiler yararlı olsa da, STEM Challenge'ın (Beyaz Saray ve ESA tarafından tanıtılan ulusal bir oyun yarışması) platformlar hakkında bazı önerileri olduğunu belirtmek isterim: http://www.stemchallenge.org/about/Default.aspx

Gamestar Mechanic, Gamemaker, Kodu, Kazı Kazan, PBS ÇOCUKLAR Akış Öğrenmeye Hazır

Özellikle STEM ile ilgili olarak bu platformlar hakkında topluluk kaynakları olduğunu hissediyorum.

Ayrıca, python ve pygame (bu aynı zamanda çevrimiçi bir kitaptır) ile ilgili bu mükemmel öğreticiye bakınız: http://inventwithpython.com/chapters/ işte özellikle pygame ile ilgili kitabın devamı niteliğindeki http://inventwithpython.com/blog/making -Oyunlar-ile-python-pygame /

İşte bir başka NYT makalesi: http://www.nytimes.com/2011/11/10/technology/personaltech/computer-programming-for-children-minus-cryptic-syntax.html?_r=2&sq=mitchel+resnick&st=cse&adxnnl= 1 ve sCP = 1 ve adxnnlx = 1322489239-tMp1Wjl9FUcI8rLaJ6cbOw

Güncelleme: burada bir eğik çizgi tartışması http://ask.slashdot.org/story/11/12/27/152228/ask-slashdot-tools-for-teaching-high-school-kids-how-to-make-games


2

Game Maker, programlama deneyimi olmayan kişiler için mükemmel bir seçimdir. Ücretsiz bir sürümü ve nispeten ucuz ücretli bir sürümü var. Sürükle ve bırak arayüzü ile hızlı bir şekilde oyun yapmanızı sağlar, ancak daha gelişmiş komut dosyaları için destek içerir.


5
Bunu reddetmeyeceğim, ancak GameMaker ve Visual Basic, kötü sözdizimi (VB) öğreten araçlardır ve GameMaker gerçekten de çok iyi değildir. Birincisi, VS gibi güzel IDE'lere erişiminiz yok, Sürükle ve Bırak Oyunu yapmak gerçekten hiçbir şey öğretmiyor.
Joe,

1
Neden VB'den bahsettiğinizi bilmiyorum; Game Maker'ın kabaca C tabanlı. Her şeye rağmen, Game Maker hiçbir şey bilmemekle, oyun geliştirme için gerekli olan düşünce tarzını anlamak için iyi bir yoldur. Olaylara cevap vermek, oyun döngüsünü sürdürmek, grafik kaynaklar ve kod arasındaki ilişkileri kullanmak, bir projeyi fikirden yayına getirmek; bunlar sürükle ve bırak gelişimi ile öğrenebileceğiniz şeyler. GML'nin sınırlı bir dil olduğu konusunda hemfikirim, ancak bir bütün olarak sistem iyi bir başlangıç ​​noktası.
Gregory Avery-Weir,

1
VisualBasic'ten, Başka Bir Korkunç Programlama Aracı olan DarkBASIC'ten bahsediyorum.
Joe,

Game Maker kesinlikle sonuç odaklı öğretim için iyi bir yoldur. Fizik veya render öğrenmeye gerek yok. Sadece dahili özellikleri kullanın. Ve C ++ 'a geçmek kolaydır, çünkü bunları Game Maker'da borç alarak başlatabilir ve daha sonra Game Maker'da tamamen hendek kazabilirsiniz.
William Mariager

Asla, GameMaker'ı on bir yaşından büyük birisine asla önerme ... On beş yaşındaysa, başını programlama etrafına sarabilir.
jcora

2

Martin’in dediği gibi, UDK muhtemelen AI, modeller ve aynı zamanda bir çok kitap gibi önceden hazırlanmış şeyler ile çalışırken bir şeyler elde etmenin en hızlı yoludur. Çok iyi bir harita editörü var ve dil Java-esque (ve ECMA-script gibi).

Bir alternatif, Flash veya Silverlight'ta oyun yapmayı denemek olabilir - basit 2D oyunlarla başlayın. Hangi oyun türü olursa olsun, araç setini belirler.


1
Yok hayır! UDK değil! Bu: adamcağız, yavaş, hataya açık, karmaşık, vb. Bunun yerine Unity ile gidin.
Joe,

@ firedude67 UDK buggy, hataya açık? dalga geçmek?
Quazi Irfan

Deneyimime göre inanılmaz derecede gecikti, inşa ettiğim herhangi bir şey BSOD verdi ve hiçbir yardımcı belge bulamadım. Örnek projeler bile çalışmadı.
Joe Kişi

1
UDK buggy'i hiç bulamadım, ancak oyun programcısı için kesinlikle tavsiye etmiyorum. Bir sanatçı, evet, ama bir programcı, hayır. 'Dokümantasyon' bir şakadır ve hangi sınıfları alt sınıfa koyacağınızı bulmak için, size bir API referansı vermemeye karar verdiklerinden, aslında ana sınıfı açmanız gerekir. Ayrıca, farklı tipteki oyunları yapabilmek için çok fazla çalışmaya ihtiyaç var, çünkü kalbindeki bir FPS motoru.
DMan

1

14 yaşından itibaren bu tavsiye faydalı olabilir. Bir platform seçmenin en iyi yolunun, amaç için en uygun platform olduğunu biliyorum. Bu yazıyı daha önce birçok kez yaptım.

Gönderen Reddit -

Amacınıza uygun bir dil seçin. Çoğu oyuncu, oyunun hangi dilde programlandığını önemsemez. Oyun oynayıp oynamamayı umursarlar. Bilgisayarlarında hızlı çalışıp çalışmadığını önemsiyorlar. Oyunun 10 gb boyutunda olmamasına önem veriyorlar. Bir exe veya kavanoz olup olmadığını umursamıyorlar.

Minecraft gibi oyunlara bakın. Oyun endüstrisinde son derece küçük bir pazar payına sahip bir dil olan Java dilinde yazılmış olduğundan emin olun. Tüketiciler olsa umursuyor mu? Hayır. İşlevselliği önemsiyorlar.

Ancak, oğlunuzun programlama konusunda herhangi bir deneyimi olmadığından, Python gibi kodlaması hızlı bir dil öğrenmeyi veya XNA gibi mevcut bir platform kullanmayı öneririm. Şahsen ben Java ile Slick2D'yi seviyorum, ama sanırım tercihim bu ...


0

Programlamaya genç yaşta (15 yaşından küçük) girdim ve babam VB'yi kullanmaya karar verdi (1.0). Bir zamanlayıcı nesne ve GDI çizimi kullanarak bükülmüş bir pong sürümü yaptık. Bunu sevdim çünkü boş bir tuvalle başladık ve eğlenceli bir şeyler yapmaya çalışırken programlama yapılarının temellerini öğrenebildik.

Bugün, XNA'yı seçip basit bir 2D oyun seçeceğimi düşünüyorum. C # ve XNA oldukça yalındır ve sizi büyümek için bolca yer bırakırlar ve ücretsizdirler.


-4

Eğer sadece oyun yapmak istiyorsa, XNA, Unreal, Unity vs. kullanmalı. Oyun programcısı olmak istiyorsa, önce C / C ++ ve OpenGL / SDL veya D3D'yi öğrenmesi gerekir.

XNA, Unreal, Unity vb. Oyun yapmak için harika ama sizin için çok fazla şey yapmakta gerçekten çok kötü. İnsanların bu konuda benimle aynı fikirde olmadıklarından eminim, ancak bunlar temelde sizi tembel bir programcılığa dönüştürüyor ve C ++ 'daki noktalar gibi şeyleri öğrenmeye geldiğinde, ilk önce daha kolay seçeneklere sahip olduğunuz için daha zor olacak.

Peronal olarak, bir oyun programcısı olmak istiyorsanız, diğer C / C ++ 'ları ilk dil olarak öğrenmenizi önermem. Asıl sebep, gidip C # / XNA'yı öğrenseniz bile, oyun geliştiricisi olma konusunda ciddi olursanız, bir aşamada C veya C ++ ile tanışmanız gerekecek çünkü sizi başka türlü işe almayacaksınız. Eğer meslekle ilgili ciddi iseler, o zaman sadece sizden ne beklendiğini öğrenmeyi geciktiriyorsunuz.


10
15 yaşında bir profesyonelce çalışmaya hazır olduğunda (bundan sekiz yıl sonra), herkesin C ++ kullanacağını varsaymak için hiçbir neden görmüyorum. Sekiz yıl önce, C ++ oyunlara yeni girmeye başlamıştı ve ilk gerçekten pratik standardını elde ediyordu ve çoğu herkes C ile nakliye yapıyordu. Sekiz yıl önce, C ++ 'ın oyun geliştirme ve oyun sırası için çok kötü bir durumdaydı. C ve asm oldu. Sekiz yıl sonra, çoğu oyun programlama muhtemelen şimdi yaptığı C ++ 03'ten çok XNA'ya benzeyecek. (devam)

8
Temel unsur, herhangi bir dilden bağımsız olan iyi bir programcı olmaktır . Yeni programcılar için, C # onları daha hızlı motive edecek. İyi olmak istiyorlarsa geri dönecekler ve daha ayrıntılı şeyler öğrenecekler, ancak bu aşamaya gelmeleri için onları yeterince uzun tutturmanız gerekiyor.

5
Oyun programlamasındaki önemli detaylar SSE değil SIMD'dir; önbellek çizgileri, C ++ standart düzeni değil; karma, std değil :: unordered_map; polimorfizm, sanal fonksiyonlar değil. Bu son şeyler minutea ve esastır , temel değil. Eskiyi tanıdığınızda, ikincisi önemsizce takip etme eğilimindedir.

2
C ++ ile başlamak genellikle kötü bir fikirdir. Zor bir dil ve ilk olarak moreso.
Komünist Ördek

4
C ++ 'ta 15 yaşında başladım ve şu an bulunduğum yerle mutlu olmama rağmen, daha kolay bir şeyle başlamak çok daha az acı verici olurdu ve işaretçilerden ve çarpmalardan ziyade gerçek oyun geliştirmeye odaklanmama izin verdi ...
Riley Adams
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.