Kod yazma kısmı bu işin en basit tarafıdır. (Dil farketmez, android için java, c, c++ ve hatta c# ile bile uygulama geliştirebilirsiniz).
Oyun yapabilmek için bilmeniz gerekenler:
1- Oyun Teorisi (oyunun bilgisayar - oyuncu arasındaki oyun puanı hesabı (level sisteminde gereklidir, gittikçe zorlaşan seviyeler için oyuncunun kazanmak için puanı düşmelidir.)
2- Yapay zeka (oyunun otonom bir şekilde harita, seviye vs üretebilmesi, canavar, yoldaki arabayı vs çizdirebilmesi gerekir)
3- Algoritma (oyunun temel olarak hangi girdileri alıp ilgili girdilere göre hangi sonuçları üreteceği ve bu sonuçlar dahilinde çevre koşullarına göre final statementların oluşturulması vs. Örneğin: kullanıcı telefonu sola yatırdı arabayı sol şeride geçirmiş oldu ancak sol şeritte başka bir araba var, oyunun çarpışmayı algılaması, simüle etmesi, kullanıcıya göstermesi, kaza sonucu hız düşmesini vs hesaplaması, hatta gerekirse arabaya takla attırması vs vs)
4- Grafikler; Grafiklerin düzgün ve mobil cihazlara yönelik tasarlanması gerekir, grafikten kasıt sadece araba tasarımı düşünülmemelidir, yolda giderken arka planda çıkan binaların kaplandığı pencereler vs gibi bir çok detay vardır. Bu iş için 1 mb boyunda bir bina resmini göstermeniz size çok pahalıya patlar (her bir nesne programla çizdirilmek yerine imaj objesi olursa 4 çekirdekli işlemcili bir telefonda bile kasar, oynanmaz). Bunun için directx veya opengl bilmeniz gerekir. (Özetle: bilgisayar grafikleri, doku kaplama, görünmeyen yüzey kaldırma, 3d dünyadan 2d dünyaya izdüşüm vs vs).
5- Programlama mantığına hakim olmak. (Bir dilin syntax'ını papağan gibi ezbere biliyor olmanız hiç birşey ifade etmemektedir, eğer programlama mantığına hakim değilseniz bırakın bu işi).
Dünyanın en basit ve zevkli oyununu geliştiriyor olsanız bile bu 5 adımın ne olduğunu bilmeden, tecrübeniz olmadan oyun geliştiremezsiniz, oyun geliştirseniz bile o oyun tutmaz.
Hadi diyelim bu söylediklerimi bir kenara bırakalım.
Bir oyun geliştirmek için ihtiyacınız olan dillere bakalım (özellikle dilllere dedim, çünkü html, xml vb programlama dili değildir, biçimlendirme dilidir, arada fark var itiraz etmeyin üzerim

)
oyunun ekranda görünümü için: xml ile nesneleri konumlandırmanız gerekir.
oyun motoru için: java'ya ihtiyacınız var (java yerine objective c kullanabilirsiniz, veya isterseniz "ben .netçiyim arkadaş" diyorsanız .net kullanın) ve hatta delphi dili ile bile android uygulaması geliştirebilirsiniz.
nesnelerin hareketini sağlamak için: opengl es 1.0 kullanacaksınız ve 1.0 sürümü çok kısıtlı grafik opsiyonları sağlar (opengl es 2.0 sürümü çok daha gelişmiştir ancak tüm cihazlar desteklemiyor bu sürümü, sadece 2013 ve sonrası çıkmış harici ekran kartı olan cihazlarda bu destek var).
grafikleri tasarlamak için
en azından paint'e ihtiyacınız olacak.
özet: "bu iş sanıldığı kadar basit değildir."
hadi diyelim muhteşem bir uygulama yazdınız, markete koydunuz, ee sonra?
markette ilk hafta 10k indirildi, ee çok güzel.
peki ya sonra? 2. hafta ne olur biliyor musunuz?
amerikalı bir şirketin ihbarı ile uygulamanız marketten silinir ve o şirket oyununuzun daha gelişmiş halini piyasaya sürer.
nasıl mı?
amerikalı firma oyununuzda küçücük bir "patent ihlali" yaptığınızı tespit edip yerel mahkemeye başvurur, yerel mahkeme de google store'dan uygulamanızın kaldırılmasını ister. amerikaya girdiğiniz anda bu mahkeme kararı tutuklanmanıza bile sebep olabilir.
bu piyasada yer alabilmek için öncelikle markası korunan uluslar arası bir şirket olmanız gerekmektedir.
bu söylediklerime "çok uçuk yeaa, bize dava açmazlar" diyenler google'da birazcık "king.com'un açtığı davalar'ı vs" araştırsın...
(king'in açtığı bir dava örneği: rakibinin oyununu birebir klonlayıp ardından patentini alıp rakip tarafın "daha önceden yayınlanmış olsa bile" yayından kaldırılmasını sağlamak. daha sonra korkularından king isminin patentini bile aldılar oyun alanında.)
özetle: piyasada çok büyük aslanlar var, dikkatli olun...
ekleme:
tasarladığınız oyuna spesifik olarak bilmeniz gereken diğer konular var.
örnek olarak: bir araba yarış oyunu motoru kodluyorsanız eğer;
"lisede en nefret ettiğiniz ders olan fizik'e ihtiyacınız var" (not: fiziğe şeklinde bilerek yazmadım, fizik'i özel isim olarak kullandım, hızlı yazdığım için de büyük/küçük harflere dikkat etmiyorum kusura bakmayınız.)
şöyle ki: sol şeritten viraja yavaşlayarak giren bir arabayla çarpışma sahnesini hesaplarken her iki araca uygulanan "merkezkaç kuvvetini", (eğer dikkate alıyorsanız "yoldaki sürtünme kuvvetini" (oyunda arabaya spesifik teker seçimi sunuyorsanız eğer hesaplamalısınız, hava yağmurlu ise yolun sürtünme katsayısının düşmesi vb durumlar ekstradan), "itme, momentum" konusunu (2 araba hangi hızla çarpıştı hangi yönde ilerliyorlardı, arabaların kütleleri neydi vs), arabaların "ivme"leri falan...
bu örnekte sadece viraja giren 2 arabanın (biri karşı şeritten gelen oyunun ürettiği araba, diğeri kullanıcı arabası) çarpışmasının sonuçları üzerinde hesaplamalar vardır, sadece 15-20 metrelik bir parkurdur
ve en önemlisi bu söylediklerimin "real time" çalışmasının sağlanması gerekir...