paint-brush
Oyun Geliştirmede Kariyer Size Uygun mu?ile@solverit
378 okumalar
378 okumalar

Oyun Geliştirmede Kariyer Size Uygun mu?

ile Andrey Mikheev16m2023/11/01
Read on Terminal Reader

Çok uzun; Okumak

Bir oyun geliştiricisi olmak istiyorsanız genel programlama becerilerine odaklanarak ve temiz, yüksek kaliteli kod yazarak başlayın. Milyar dolarlık bir oyun yaratmak için acele etmeyin; bunun yerine geliştirici olarak büyümeyi hedefleyin. Temiz kod, temiz mimari, ECS, SOLID, KISS, OOP, algoritmalar ve veri yapıları gibi öğrenme kavramlarına öncelik verin. Deneyim kazanmak için bir oyun stüdyosunda staj yapmayı veya kendi kendine çalışmayı düşünün. Hedeflerinize bağlı olarak C#, Java, JavaScript, Lua veya Python gibi bir programlama dili seçin. Çoğu programlama kaynağı İngilizce olduğundan teknik İngilizce öğrenmek çok önemlidir. Tek oyunculu veya çok oyunculu oyunlar üzerinde çalışmak isteyip istemediğinize karar verin. Deneyim oluşturmak ve karmaşıklığı giderek artırmak için küçük projelerle başlayın. Araçlarınızı seçin, önce programlama dilini öğrenin, ardından oyun motorlarına geçin. İlk oyununuzu Itch.io gibi platformlarda veya web portallarında yayınlamayı düşünün. "Kodsuz" yaklaşımlardan kaçının ve eğlenmeyi unutmayın; oyun geliştirmede tutku çok önemlidir.
featured image - Oyun Geliştirmede Kariyer Size Uygun mu?
Andrey Mikheev HackerNoon profile picture
0-item


Yani oyun geliştirmeye girmek istiyorsunuz. Veya daha spesifik ve basit bir şekilde, işlerin teknik tarafı üzerinde çalışan bir oyun geliştiricisi olmak istiyorsunuz. Herkesin bunun nasıl yapılacağına dair soruları olacaktır!


Örneğin:


  • Nereden başlamalı?
  • Becerilerinizi nasıl geliştirebilirsiniz?
  • İlk önce hangi oyun motorunda ustalaşmak daha iyidir?
  • Hangi programlama dilini seçmelisiniz?


Bu konularla ilgili tonlarca bilgi var; o kadar ki bu, beyninizi kolayca aşırı yükleyebilir, dolayısıyla değerli seçimler yapmanızı zorlaştırabilir.


Adım Andrey Mikheev ve Pixonic, MY.GAMES'te Kıdemli Arka Uç Geliştiricisiyim. 20 yıldır oyun sektörünün içindeyim. İlk olarak 90'lı yıllarda o zamanlar popüler olan ZX Spectrum'da oyun yapmayı denedim. Bu yazımda oyun geliştirmeye geçiş yaparken sahip olduğunuz seçenekleri aydınlatacağım ve bu seçeneklerin nasıl farklılık gösterdiğini anlatacağım.


İlk önce birkaç şey

Bu yazıda okuyucunun sektöre doğru yolculuğuna yeni başladığı varsayımıyla hareket edeceğiz. Her şeyi aynı anda öğrenmek imkansızdır ve bu nedenle önceliklerinizi belirlemeniz ve çalışmalarınıza nasıl devam edeceğinizi seçmeniz gerekecektir. Elbette herkesin farklı bir deneyimi vardır; Bu meslekte gelişmenin birden fazla yolu var.


Oyun geliştirmenin (ve BT'nin diğer birçok alanının) güzelliği, becerilerinizi uygulayabileceğiniz birçok alanın olmasıdır: yapımcı, pazarlamacı, sanatçı, tasarımcı, senarist, modelci, analist, müşteri tarafı geliştiricisi olabilirsiniz. çekirdek geliştirici, meta hizmet geliştiricisi, render geliştiricisi vb. Aslına bakılırsa, bağımsız oyunlar dünyasında, yukarıda bahsedilen becerilerin neredeyse tamamını birleştirmeniz gerekiyor; ancak bu başka bir günün konusu.

Oyun geliştirme alanında bir kariyere başlamayı düşünürken insanlar genellikle teknolojik yönlere odaklanır: uzmanlaşılacak motor, ilk seçilecek programlama dili veya üzerinde çalışılacak belirli beceriler.


Ancak teknolojinin sadece bir araç olduğunu unutmayın; geliştirici olarak kimliğinizin tamamını belirli bir şeyin etrafında oluşturmanıza gerek yok ; tamirci İngiliz anahtarı değildir. Bugün yıldız tornavida, yarın elektrikli, yarından sonraki gün havalı bir alet. Amaç, belirli bir tornavidanın nasıl kullanılacağını öğrenmek değil, arabaların yapısını ve bunların nasıl monte edilip onarılacağını anlamaktır.


Teknoloji sadece bir araçtır, yeteneğinizdir; önemli olan budur


Bu anahtarları oyun motorları, kodlama dilleri ve diğer şeylerle değiştirin; konu değişmeyecektir. Bunlar yalnızca kullanmanız için kullanılan araçlardır


Oyun geliştiricileri için genel becerilere ilişkin bazı tavsiyeler

Yani bence bu aşamada genel beceriler en önemli şey. Çünkü size bir “oyun” yaratma görevi değil, iyi kod yazma görevi veriliyor.


Hedef milyar dolarlık hit bir oyun yapmak değil, geliştirici olarak büyümek. Milyar dolarlık bir oyun yapmak zaten geliştirmeyle ilgili değil, fikir ve pazarlamayla ilgili; kod bunun için ikincil bir şeydir. Tabii ki, bu iki hedef birbiriyle çelişmiyor, ancak ilk hedefiniz olarak çarpıcı bir başarıyı belirlemem; bunu yaparsanız, genel olarak tüm girişimle ilgili olarak kısa sürede hayal kırıklığına uğrayabilirsiniz.


Kod konusuna dönecek olursak, koda genel olarak odaklanmak önemlidir çünkü yüksek kaliteli kod her sektörde her zaman büyük talep görecektir ve bunun birçok uygulaması vardır: oyunlar, fintech, robot kontrol algoritmaları, uzaya roket fırlatma. Bazıları yüksek kaliteli kodun büyük gecikmeler anlamına geldiğini ve bu işte zamanın çok önemli olduğunu söyleyebilir. İnanmayın. İyi kod yazabiliyorsanız kesinti yaşanmaz.


Başka bir şey de, kodunuz özensizse, yüksek kaliteli bir ürün oluşturmak için alışkanlıklarınızı düzeltmeniz gerekecek ve bu da çok zaman ve çaba gerektirecektir.


Bir başka çok önemli nokta da zamanlamayla ilgilidir: İyi kod oluşturmak için harcanan zaman, onu sürdürmek için harcanan zamanın azalmasıyla her zaman dengelenir . Sonuçta, bir oyun ve özellikle çok oyunculu bir oyun uzun ömürlü bir üründür ve bu durumda kodun kalitesi büyük önem taşımaktadır.


Diğer uzmanların kodunuzu kolayca anlayabilmesi, yeniden yazmaya gerek kalmadan uyarlayabilmesi gerekir . Ve birkaç yıl içinde aniden bir şeyi değiştirmeye karar verirseniz, siz de onu kolayca okuyabilmelisiniz . Kaba bir örnek vermek gerekirse: bir haftada anlaşılmaz bir şey yazıp her reşit olmayan kişi için bir aya ihtiyaç duymak yerine, birkaç ay boyunca yüksek kaliteli kodu bir kez yazmak ve birkaç gün içinde hızlı bir şekilde bazı değişiklikler yapabilmek daha iyidir. gelecekte düzenleyin.



Temiz kod oluşturmaya çalışın; bu size çok yardımcı olacaktır



Özetle, temiz kod, temiz mimari, ECS, SOLID, KISS, OOP, algoritmalar ve veri yapıları — oyun geliştirme alanında iyi bir teknik uzman olmak istiyorsanız tüm bu konulara özellikle dikkat edilmelidir .


Evet, algoritmalar bazı kişilerde baş ağrısına neden olabilir. Ancak oyun geliştirmede bu "algoritmalar ve yapılar", tipik web projelerinden çok daha fazladır ve eğer bunlarda uzmanlaşırsanız, hayatınızı büyük ölçüde basitleştireceklerdir.


Bu kavramların daha derinlemesine anlaşılması doğal olarak ancak deneyimle mümkün olacaktır. Zamanla çeşitli projelere katılacak, diğer uzmanların nasıl çalıştığını anlamaya başlayacak ve oyun koduyla çalışırken kişisel olarak nelerin sizi rahatsız ettiğini göreceksiniz.

Başkalarının deneyimlerinden öğrenmek çok önemlidir . Açık kaynak projeleri inceleyin, sektör uzmanlarının derslerini dinleyin ve unutmayın, şu anda pek çok bilgi kaynağı mevcut. Ancak yapmamanız gereken şey, özellikle ekibinizde iyi bir akıl hocanız yoksa, projenizin suyuna karışmak. Hiçbir yetkin geliştirici boşlukta çalışamaz. Burada asıl önemli olan aşırıya kaçmamak ve ne yaptığınızı, neden yaptığınızı anlamadan diğer projelerin kodlarını kullanmaya başlamaktır.


Ve bir önemli nokta daha: kodu yeniden yazmak normaldir, bunu yapmaktan korkmayın . Üstelik eğitim döneminde bu çok önemli. İyi uygulamaları kullanmanın kodunuzu geliştirmenize ve bakımı daha kolay hale getirmenize nasıl olanak sağlayacağını göreceksiniz.


Genel programlama becerilerinizi geliştirme süreci hızlı değildir. Aylar hatta yıllar sürebilir. Buna hazır olun çünkü onsuz yapamazsınız.


İyi bir stüdyoda staj yapma fırsatınız varsa bu sizin gelişiminizi büyük ölçüde hızlandıracaktır . Oyun geliştirmenin çeşitli yönlerini öğrenme ve mentorlardan sorularınızın yanıtlarını alma şansına sahip olacaksınız. Ancak dürüst olalım, bu en yaygın yol değil.

Oyun endüstrisinde sıfırdan ilk işi aramak başka bir zorluktur. Ünlü paradoks: İş bulmak için deneyime ihtiyacınız var, deneyim kazanmak için de işe ihtiyacınız var. Bu durumda kendi kendine çalışmayı düşünmeye değer . Ücretli kurslar fikrinden hemen vazgeçelim: Birçok nedenden dolayı herkese uygun değiller. Neyse ki internette oyun kodlamanın tüm yönleriyle ilgili düzinelerce ve yüzlerce rehber var.



Oyun motoru seçme

Bu temel soruları kendiniz cevapladıktan ve neyi, nasıl öğreneceğinizi anladıktan sonra, hangi oyun motoruyla çalışacağınıza karar vermenin zamanı geldi ve bu aynı zamanda öğrenmeniz gereken programlama dilini de belirleyecek.


Bu konu tek bir makalede ele alınamayacak kadar geniştir. Üstelik geliştiriciler olarak motorlarla programlama dilleri kadar ilgilenmiyoruz. Konuyu daha derinlemesine incelemek istiyorsanız okumanızı tavsiye ederim. yararlı makale Game Developer'dan Steam'deki en popüler oyun motorları hakkında.


Yolculuğunuzun başında Unreal Engine veya Unity gibi büyük ve ciddi bir motoru hemen seçmenize gerek yok. Herhangi bir teorik veya pratik altyapınız yoksa web oyunlarına yönelik bir motor yeterli olacaktır: PlayCanvas veya analogları gibi bir şey.


Defold motoru da başlangıç ​​için iyi bir seçenek olabilir . Unity'den daha basittir ve 2D oyunlara daha odaklıdır. Öğrenmesi kolay, çok basit bir dil olan Lua'yı kullanır.


Piyasada düzinelerce farklı oyun motoru var, bu yüzden birini seçmek göz korkutucu olabilir



Programlama dillerine öncelik vermek

Biraz zaman kazanmanız için, dillerin bazı yönlerini basitçe anlatacağım ve bunları kendi öğreneceğim şekilde öncelik sırasına göre sıralayacağım; bu düzen dilin kalitesi veya sorunları hakkında konuşmuyor. Bunun yerine, karmaşıklık, uygunluk ve dillerin yetenekleri arasındaki dengeye ilişkin benim değerlendirmemdir.


Örneğin Lua çok ilginç bir dil, öğrenmesi kolay, Defold motorunu kullanarak onunla bir oyun yazabilirsiniz. Ancak bunu geliştirme deneyiminiz için ana dil olarak seçemezsiniz. C++ veya C# gibi daha popüler dillerle birlikte kullanılan yardımcı bir dildir.

Elbette bu tüm programlama dillerinin tam listesi değildir. Bir düzineden fazla var. Ama sizin için belirtmek istediğim şey bu. İşte öğreneceklerim ve hangi sırayla:


  • Turkish : Evet, şaşırma. Bir geliştirici için muhtemelen en önemli dildir. Ana diliniz değilse, bu konuyu çalışmak size büyük fayda sağlayacaktır. Programlamaya ilişkin çoğu bilgi İngilizce olarak mevcuttur: kılavuzlar, kurslar, belgeler, forumlar; genel olarak, çalışmanız gereken her şey. Teorik olarak, kendi ana dilinizdeki yerel programcı topluluklarını arayabilir ve oradan yardım isteyebilirsiniz, ancak bunu İngilizce dilindeki bir kaynakta yaparsanız sorun yüz kat daha hızlı çözülecektir.


  • C#: Geliştirme konusunda ciddi bir şekilde ve uzun süre çalışmayı planlıyorsanız popüler genel amaçlı dillerle başlamak daha iyidir. C# da bunlardan biri. Aynı zamanda yedekleme planınıza da uygun bir dildir: Oyun geliştirmeden aniden sıkılsanız bile, C#'ta fintech, iş uygulamaları vb. gibi çeşitli yazılımlar yazabilirsiniz.


    C#, standart programlama kavramlarını tanımanıza ve çeşitli geliştirme yaklaşımlarını uygulamanıza olanak tanır. OOP, CQRS, DDD, ECS gibi görünüşte korkutucu kısaltmalar hakkında her şeyi öğreneceksiniz. Elbette bu yaklaşımların çoğu herhangi bir programlama dilinde uygulanabilir. Ama nüanslar var. Örneğin her dilde “sınıf” kavramı yoktur ve buna göre kavramlar farklı şekilde uygulanır. Bu, acemi bir geliştiricinin aklını başından alabilir ve motivasyon sorunları da dahil olmak üzere bir sürü gereksiz sorun yaratabilir. Dolayısıyla benim görüşüme göre C#, örneğin JavaScript ile karşılaştırıldığında geliştirme alanında bir kariyere başlamak için en iyi (ancak en kolay değil) seçimdir .


  • Java : C# gibi Java da genel amaçlı bir dildir. Ancak oyun geliştirmede, esas olarak sunucular açısından önemlidir. Elbette Java oyun motorları da var (örneğin, LibGDX), ancak oyun geliştirmede Unity gibi bir şey kadar popüler değiller.


    Yine, bu genel diller, Java'yı zaten bildiğiniz, ancak örneğin Fintech'te çalıştığınız ve sonra aniden bir oyun yapmaya karar verdiğiniz bir durum için iyidir. Sırf deneme olsun diye sıfırdan yeni bir dil öğrenmek istemezsiniz değil mi?


  • JavaScript : Stack Overflow'un kurucularından Jeff Atwood'un dediği gibi, “JavaScript'te yazılabilen her şey JavaScript'te de yazılacaktır .


    Giderek daha fazla oyun projesinin bu dilde yazıldığı üzücü ama bir o kadar da gerçek. Gerçek şu ki, JavaScript özellikle yeni başlayanlar için çok basittir. Ve eğer bir tür web motoru üzerinde çalışıyorsanız, büyük olasılıkla kod satırlarınızı nereye girmeniz gerektiği bile söylenecektir.


    Basitliğine rağmen JavaScript'in oyun geliştirme yolculuğunuza başlamak için iyi bir yer olduğunu düşünmüyorum. Diğer genel amaçlı dillerden çok farklıdır ve bu, geliştiricilere hile yapabilir. Bir geliştiricinin ilk programlama dilindeki kavramlar açısından düşündüğü bir fikir vardır. Bunda bazı gerçekler var, bu nedenle başlangıçta daha genel teknikler ve yaklaşımlar öğrenmek daha iyidir. Ancak web oyunlarıyla başlamaya karar verirseniz, muhtemelen JavaScript olmadan idare edemeyeceksiniz. Web dünyasında hüküm sürüyor. Bu durumda TypeScript'e dikkat etmenizi tavsiye ederim. Bu dil C#'a çok benzemektedir ve gelecekte başka bir dile geçişi kolaylaştıracaktır.


  • Lua/Python: Bunları neden bir araya getirdim? Bunlar genellikle oyun mantığının ayrı bölümlerini kodlamak için kullanılan komut dosyası dilleridir. (Evet, Defold gibi motorlar var ve bunlar ana geliştirme dilleridir. Ancak bunlar kuralın istisnalarıdır.) Örneğin Python , satır içi komut dosyası oluşturma için çok popüler bir araçtır ve Blender 3D düzenleyicide kullanılır.


    Lua ve Python'u bilmek ve kullanabilmek faydalıdır ancak daha önce de belirttiğim gibi bunlar yardımcı dillerdir ve bunları sonraya saklarım. Tabii ilk projeniz için Defold motorunu seçmediyseniz Lua vazgeçilmezdir.


  • C++ : Bazılarınız C++'ın listenin en altında yer almasına şaşırmış olabilir. Ve bunun nedeni dilin kötü olması değil, yolunun en zor olmasıdır. Bu, sunulanlar arasında en güçlü dildir, ancak aynı zamanda kendi özellikleriyle en karmaşık olanıdır.


    C++ AAA oyunları yapmak için kullanılır ve donanımdan en iyi şekilde yararlanmayı mümkün kılar. Ancak bunu acemi bir geliştiriciye tavsiye etmem; şansınız yüksektir, sektörde hayal kırıklığına uğrayacaksınız. Ancak gerçekten ihtiyacınız olan şeyin C++ olduğunu biliyorsanız, karşılaşılan zorluklardan korkmuyorsanız ve net bir eylem planınız varsa, o zaman devam edin!​​




Bunlar programlama dillerinden sadece birkaçı


Bir programlama dili seçmek önemlidir, ancak her şeyden önce teknik İngilizce seviyenizi yükseltmeniz gerektiğini unutmayın; bu, kılavuzlar, kurslar ve diğer değerli bilgi kaynakları arasında gezinmenize yardımcı olacaktır.


Tek oyunculu mu yoksa çok oyunculu mu?

Bana göre bu, bir oyun geliştiricisinin vermesi gereken bir sonraki karardır. (Mobil oyunlar, AAA veya web oyunları geliştirme arasında seçim yapmak gibi bir şey değil.) Bunun nedeni basit: yolculuğunuzun en başında büyük oyunlar yapma seçeneğiniz neredeyse kesinlikle olmayacak. Bir düşünün, hiçbir deneyiminiz olmadan bir tür Escape from Tarkov veya Call of Duty üzerinde nasıl çalışabilirsiniz? İlk oyununuz büyük ve karmaşık olmamalıdır, aksi halde bitiremezsiniz. Sadece tükenip oyun geliştirmeyi bırakacaksınız.


Tam olarak ne yapmak istediğinizi anlamak güzel. Deneyimli bir geliştirici için bu o kadar önemli değil, ancak başlangıçta bu sorunun cevabı olası çalışmanın yollarını daraltacaktır.


Tek oyunculu ve çok oyunculu oyun açısından: İstemci geliştirme (yani oyunun oyuncunun doğrudan etkileşime girdiği kısmı) açısından bakıldığında, bir geliştirici için fark o kadar da büyük olmayabilir. Ancak çok oyunculu oyun bir arka uç ve bununla ilgili tüm sorunları gerektirir ve bu da ayrı ve geniş bir konudur.


Tek oyunculu oyun bu açıdan daha kolaydır çünkü dünyanın durumunu diğer oyuncular için senkronize etme, oyun mantığını ayırma veya benzeri sorunlar konusunda endişelenmenize gerek yoktur.


Oyun mekaniği açısından, tek oyunculu bir oyun, çok oyunculu bir oyundan çok daha basit olabilir ve proje ne kadar basitse, onu bitirmeniz de o kadar kolay olur. Ve başladığınız işi bitirmek her işte kritik bir beceridir!


Özetlemek gerekirse, tek oyunculu oyunlarla başlamanızı tavsiye ederim; bu daha kolay olacaktır . Ama gerçekten arkadaşlarınızla oynayabileceğiniz basit bir çok oyunculu oyun yapmak istiyorsanız neden olmasın? Sadece ilk çalışan sürümünüzü edinmenin daha fazla zaman gerektireceğini anlamalısınız. Bununla birlikte, kişinin içsel dürtüsü çok karmaşık bir şeydir; belki de çevrimiçi oyunlar oluşturmak sizi tek oyunculu oyunlardan çok daha fazla motive edecek ve ilk projenizi tamamlama şansınızı artıracaktır.


İlk projeniz

İşte asıl soruya geliyoruz; oyun yapmak istiyorsanız tam olarak nereden başlayacaksınız?


1. Adım: Araçlarınızı seçin

Diyelim ki ilk etapta yapmak istediğimiz oyun türünü kabaca zaten anladık. Ağırlıklı olarak ne tür programlama dillerinin kullanıldığını ve bunların hangi motorlarda kullanıldığını biliyoruz. Bu dilin ve motorun seçilmesi gereken aşamadır. (C# ile başlamanızı tavsiye ederim. AAA isabetleri oluşturmak için C++'a ihtiyacınız olacak, ancak bunu daha sonra deneyim kazanacağımız zamana saklayalım.) Yani, dil-motor kombinasyonumuz C# + Unity olabilir . Bunlar talep görüyor ve mükemmel bir seçimdir.



Yaygın yanlış anlamalar


Adım 2: dili öğrenin

Bu önemli bir nokta: Bir motorla başlamayın, önce dili seçin . Dil olmadan motoru etkili bir şekilde öğrenemezsiniz; örneklerde ve belgelerde hiçbir şey anlamayacaksınız ve yalnızca kafanız karışacaktır. İdeal olarak, dile hakim olmadan ve basit programları güvenle yazabilmeden bir oyun motorunu öğrenmeye başlamazsınız.


Programlama becerilerinizi geliştirmek için aşağıdaki gibi projelere göz atın: KodlamaOyunu küçük oyunlar şeklinde çeşitli algoritmalar yazma pratiği yapabileceğiniz yer. Bunlar LeetCode kadar sinir bozucu değil ve oradaki görevler yeni başlayanlar için daha ilgi çekici. Ayrıca kendi topluluğu var ve daha önce de söylediğim gibi topluluk, yetkin bir geliştirici için çok önemli.


Adım 3: motor

Dilinize biraz alıştıktan sonra nihayet motoru incelemeye başlayabilirsiniz. 2023'te bu konuyla ilgili pek çok bilgi var: İnternet kaynaklarla dolu; seçeceğiniz her şey için düzinelerce YouTube kanalı. Artı, söylediğim gibi Unity çok popüler, dolayısıyla malzeme sıkıntısı yok.


Motorun yaratıcıları tarafından herhangi bir soruna video çözümü bulabilirsiniz (başlangıçta kuracağınız Unity Hub'da doğrudan mevcuttur), ayrıntılı belgelerde veya net üzerinden. Ayrıca insanların başarı öykülerini paylaştığı ve birbirlerine yardım ettiği saygın bir Discord topluluğuna da katılabilirsiniz. Düzinelerce var; zamanla test edilmiş bir şeye ihtiyacınız varsa, örneğin şunu deneyin: Braketler .


Yolculuğun sonraki adımları

Bunlar başlamanın üç temel adımıydı ve oradan yolunuz devam edebilir. Yaklaşık bir taslak vereyim.


Seçtiğiniz dili ve motoru biraz öğrendikten sonra basit bir oyun yaratmaya çalışın . Herhangi bir oyun, hatta tic-tac-toe bile. Her şeyi istediğiniz gibi yapın; sınır yok. Kodu kendiniz yazmalısınız. (Yine de çok yararlı bir kaynak olan Stack Overflow'tan kopyalayıp yapıştırmaktan kaçının). Ana kriter oyunun çalışması gerektiğidir.


Daha sonra oyun için bazı yeni özellikler bulun ve bunları eklemeye çalışın . Örneğin, bir platform oyunu oluşturuyorsanız, bir düğmeye bastığınızda seviyenin yerçekimini değiştiren bir özellik yapmayı deneyin; veya seviyenin bir kısmından diğerine ışınlanma yeteneği.


Çalışma taslağınıza yeni bir şey eklemenin ne kadar kolay/zor olduğunu not etmeye çalışın. kodun yapısını değiştirmek için ihtiyaç duyduğunuz miktar vb. Bundan sonra, en iyi uygulamaları inceleyin, diğer geliştiricilerin projeyi ve kodu (OOP, SOLID, KISS) düzenlemeyi nasıl önerdiğini görün ve yeni bilginizi dikkate alarak oyunu yeniden yazın.


Daha sonra tekrar yeni bir özellik bulun ve bu yeni bilgiyi kullanarak onu yaratın . Geliştirilmiş kodun yeni bir özellik eklemenizi nasıl kolaylaştırdığını veya zorlaştırdığını ve kaç tane hata bulabileceğinizi dikkate alın.


Yavaş yavaş, birkaç yineleme yoluyla projeye karmaşıklık katın ve öğrendiğiniz derslerle onu yeniden yazın.



Peki olur...



İşin kolayına kaçmadığınızı varsayarsak, aldığınız kararların yeni özellikleri nasıl etkilediğini veya uygulanmasına nasıl yardımcı olduğunu göreceksiniz. Kod kalitesinin ana kriterlerinden biri projede değişiklik yapmanın ne kadar kolay olduğudur. Ne yazık ki bununla ilgili açık kanunlar yok; her şey deneyimle birlikte gelir.


Basit oyunlar yaratmak istemiyorsanız bunun yerine bireysel mekaniği kodlayarak başlayabilirsiniz . Örneğin, bir yüzeye çakılan birkaç küpten oluşan ilkel bir "araba" yaparak başlayabilir, ardından yavaş yavaş karışıma diğer mekaniği ekleyebilirsiniz.


Bundan sonra, daha karmaşık bir oyun geliştirebilir ve projeyi geliştirmek için tekrar birkaç yinelemeden geçebilirsiniz. İlginç bir sonuç alırsanız, sonunda bu oyunu mağazalarda yayınlamayı deneyebilirsiniz.


İlk oyununuzu yayınlıyoruz

aracılığıyla serbest bırakmayı deneyebilirsiniz Itch.io Henüz büyük platformlara dahil olmak istemiyorsanız. Burada oyun geliştirmenin diğer ilgili alanlarında deneyim kazanabilir ve en önemlisi diğer insanlardan geri bildirim toplayabilirsiniz. Özellikle başlangıç ​​seviyesindeki basit projeler için her zaman yapıcı olmayabilir. Ancak küçük bir geri bildirim, büyümenize ve daha iyi bir programcı olmanıza yardımcı olacaktır.


Size oyunların piyasaya sürülmesiyle ilgili küçük bir tüyo önerebilirim: web/tarayıcı oyunları . Her ne kadar kullanıcıların artık çoğunlukla mobil cihazlarda, PC'lerde veya konsollarda oynadığı göz önüne alındığında bu format popülerliğini kaybetmiş gibi görünse de, web oyunlarının hala yeterli bir izleyici kitlesi var, bu nedenle ilk projenizi tek bir proje olarak başlatmayı deneyebilirsiniz. Bu aynı zamanda onu mobil cihazlarda yerel bir oyun olarak yayınlamaktan çok daha kolaydır.


Mobil oyun rekabeti şiddetlidir ve oyununuzun tanıtılmadığı sürece büyük olasılıkla fark edilmeden kalması muhtemeldir ve yayıncı olmadan bir projeyi tanıtmak çok zordur. Web oyunları için, bu projeleri barındıran özel portallar (örneğin: Armor Games, Newgrounds, WebGames ) vardır: orada piyasaya sürülmesi çok kolaydır ve hatta reklamlardan bir şeyler bile kazanabilirsiniz. Fazla umutlanmayın ama yine de gerçekleşirse bu hoş bir bonus olur.


“Kodsuz” yaklaşıma dair küçük bir uyarı

Şimdi küçük bir uyarı. Bu günlerde “kodsuz” yaklaşım çok popüler. Bu, kod yazılmadan bir projenin oluşturulduğu zamandır. (Buna aynı zamanda “fare tıklamasıyla programlama” da denir). Benim tavsiyem? Bu yaklaşımdan uzak durmak daha iyidir.


Bu kodsuz yaklaşımlar, oyun mekaniğini denemek veya basit bir prototip oluşturmak için idealdir. Ancak bizim farklı bir genel hedefimiz var ve kodsuz basit bir oyun oluşturmak sizi geliştirici olmaya daha fazla yaklaştırmayacak.


Unutmayın: Hiçbir makale okumak ve YouTube rehberlerini izlemek, pratik yapmanın yerini alamaz. Yalnızca birkaç (ve aslında yalnızca bir değil, birkaç) proje oluşturarak anlamlı bir şeyler öğreneceksiniz. Oyun geliştirmede bir programcı olarak yolunuzu çizmek için buradaki manta, basitten karmaşığa doğru adım adım ilerlemektir.


Oyun geliştirmeye giriş ve oyun programlamaya başlama konusunda bazı tavsiyeler vermeye çalıştım. Doğru dili ve motoru seçmek, sebat ve azim, geri bildirim toplamak ve iç gözlem; bunların hepsi çok önemlidir. Ancak bu sürecin göz ardı edilemeyecek bir bileşeni daha var: eğlenmek.


Oyunlar konusunda tutkulu değilseniz ve onları oynamıyorsanız, büyük olasılıkla bu girişimden hiçbir şey çıkmayacak; Temel olarak her türlü yaratıcı çalışma için geçerli olan üzücü bir gerçek. Eğlence olmadan, para kazanmak için yapılan bir rutin haline gelecektir. Elbette, yıllar sonra ilginizi kaybedebilirsiniz, ancak umarım o zamana kadar zaten başarılı olursunuz ve ilgili bazı işler arasında seçim yapabilirsiniz veya o noktada sizin için yeni ve ilginç bir şey yapacak kadar para kazanmış olursunuz.

Özellikle yolculuğunuzun başlangıcında, tüm çalışmanız ve oyun oynamamanız kesinlikle tükenmişliğe ve hayal kırıklığına yol açacaktır.


Bu nedenle, son tavsiyem: Sizi tutkulu yapan şeyin, sizi gecelerce bir proje üzerinde çalışmaya iten şeyin ne olduğunu arayın (elbette, bunu kelimenin tam anlamıyla yapmamalısınız!) Sürüş motivasyonunuzu bulduğunuzda, size Aksi takdirde tipik bir rutin ilginç, ilgi çekici bir mücadeleye dönüşecektir - ve bu kesinlikle mesleki gelişiminizi hızlandıracaktır!