Sadece C'de Oyun Geliştirme. Mümkün mü? [kapalı]


18

Hindistan'da ilk sınıf üniversite öğrencisiyim ve bu dönem projesi olarak küçük bir oyun yapmak istiyorum.

C'de oldukça iyiyim ve hızlı bir şekilde öğreniyorum ama tamamen C'de (C ++ veya C # yok) bir oyun geliştirip geliştirmemeyi sormak istedim, ancak bunları kullanmak isterdim ama üniversite projeleri için sadece C'yi kullanmanın katı gereksinimleri var.

Ne arıyorum basit bir üstten görünüm sürüş oyunu. Süslü bir şey olmayacak ve görsel şeyler bile basit karakterlerle güçlendirilecek. Örneğin, kullanıcı tarafından kontrol edilen otomobil | ve yol kenarları | 's serisi ile temsil edilebilir. Ne düşünüyorsun?



8
SDL C dilinde yazılmıştır. OpenGL C'dir. Daha ne istiyorsunuz?
Komünist Ördek

2
Ayrıca, Quake'in hepsi C'de yapılır.
Komünist Ördek

Kendinize bir iyilik yapın ve Allegro kütüphanelerini kullanın;) alleg.sourceforge.net
o0 '.

1
RollerCoaster Tycoon neredeyse saf montajda yapıldı, neden olmasın?
Ramon Zarazua B.16

Yanıtlar:


23

C ile oyun yazmak mümkündür. Örneğin, Quake II tamamen C ile yazılmıştır, bu nedenle C'de başka oyunlar yazmak hiç de sorun olmamalıdır. C ++ 'da C ++' dan daha yetkin ve rahat olmanız daha iyi bir seçim olabilir.


2
@Ishan Sharma: Aslında, bir çok oyun (motor) geliştirme hala C'de don ya da en azından C: ish C ++. Hiçbir şey C ++ oyununuzun sadece C ++ olduğu için daha iyi (veya daha iyi yazılmış) olacağını söylemez.
geçersiz

6
@void: Bu sadece söz konusu programcının C ++ 'ı etkili bir şekilde nasıl kullanacağı hakkında hiçbir fikri yoksa doğrudur. Yazarın nesne yönelimini temel olarak kavradığı C ++ programları, eşdeğer C programlarından çok daha güvenli ve güvenilirdir.
DeadMG

8
@DeadMG [alıntı gerekli]
Bob Somers

6
@Bob Somers: Kolay. Karşılaştırma std::stringiçin char*. std::stringher durumda her zaman kendi belleğini temizler, her seferinde doğru miktarı tahsis eder. char*, boşta bırakmayı, iki katına çıkarmayı veya yeterli bellek ayırmayı unutabilirsiniz. Whoops. Temel mantık, C ++ programlarının C programlarından daha iyi ve daha güvenli olduğunu söylüyor .
DeadMG

12
@DeadMG İyi bir programcı her dilde iyi ve güvenli kod yazabilir. Tersine, kötü bir programcı herhangi bir dilde korkunç, güvensiz kod yazabilir. Zavallı bir marangoz aletlerini suçluyor.
Bob Somers

11

Saf C, yani evet bir AAA MMORPG kod temeli üzerinde çalışıyorum.


5
Sanırım bu sizi Cryptic'e sokuyor. Herhangi bir komut dosyası dili kullanıyor musunuz?
Dan Olson

3
Tasarımcılar tarafından temelde her şey için kullanılan bir iç ifade dilimiz var ve bazı şeyler için Python ve Lua karışımını kullanıyoruz (çevrimdışı işleme, istatistikler için oyun DBS'sinde harita azaltma), ancak oyunun kendisinde Gerçek Komut Dosyası Dili yok.
coderanger

6

Evet, mükemmel bir şekilde mümkün. POSIX ve Windows, DirectX ve OpenGL gibi birçok işletim sistemi düzeyinde API'nin hepsinde C uyumlu arabirimler bulunur.


6

Fabien Sanglard, C'deki 3d motoru hakkında bir makale yazdı. Reddit'te bu makale ilginç bir tartışma yarattı.

Diller sadece bir araçtır ... Bu yüzden onları akıllıca kullanın. İyi bir oyun oluşturmak için XNA veya Unity3D kullanmak daha kolay olabilir. C mastering iyi bir ilk adımdır, ancak C ++, D, python, lua ... öğrenmelisiniz. C ++ çok zor bir dil. Bu yüzden dikkatli kullanın.


3

C oyun geliştirme için harikadır.

Bir 3D platform üzerinde çalışıyorum ve dil ile hiç problem yaşamadım. Tek sorun çarpışma tespiti ve gölgelendirme, onlar hakkında hiçbir şey bilmiyorum, yine de başka bir dilde oluşacaklardı.

Aslında, C # ve Java gibi dillerden çok daha kolay buluyorum. Hep işaretçileri (kullanarak varlıklara yineleme benim kodundan bir örnek ) ve freadharita yükleyici yapım çok zaman kurtardı.

Nesne yönelimi ve modülerlik istiyorsanız, işlev işaretçileri yapıları yapabilirsiniz.


1

Şüphesiz. Oyun geliştirmede yararlı olan birçok kütüphanede (SDL, PhysFS, vb. Gibi) çok yardımcı olan C API'leri bulunur.

Genişletilebilir, üst düzey bir programlama yapmak isterseniz , lua gibi bir komut dosyası dili gömmek isteyebilirsiniz. Birçok insan AI, etkinlikler vb.

İyi şanslar.


1

Bu sorunun basit cevabı şöyledir: Her programlama dilinde böyle basit metin tabanlı bir oyun yapabilirsiniz. Pascal, basic veya x86 çevirici bile:]

(ve başka bir şeye gerek yok)


0

Evet mümkündür, ancak en çok arzu edilen eylem şekli olmayabilir. Bazı insanlar bugünlerde C ve C ++ 'nın bir dizi görev için ideal olmadığını ve üst düzey oyun mantığının genellikle bu kategoriye girdiğini kabul ediyor.

C ++ yerine C konusunda ısrar ediyorsanız (bu benim için hiçbir anlam ifade etmiyor, ancak her birinin kendi başına), Lua'yı C ile birlikte kullanmaktan en iyisi olabilirsiniz.

C gerektiren üniversite projeleriniz için bu bir seçenek olmayacak, ancak boş zaman projeleri için öğrenmenin iyi bir yolu olacaktır.


Lua geliştirme zamanında iyidir, ancak yayınlanmadan önce daha yüksek performans için her şey yerel bir dile taşınmalıdır.
Triang3l

@ Triang3l Hiç katılmıyorum. Açıkladığınız şey erken optimizasyon. Yerel bir dil kullanmak, kodunuzun daha hızlı olduğunu garanti ETMEZ. Bunu yapmanın doğru yolu, kodunuzun profilini oluşturmak, darboğazları bulmak ve bu kodu geliştirmektir. Geliştiricilerin Java kodunu değiştirmek için kendi C kodlarını yazmaya çalıştıkları ve C kodunun önemli ölçüde yavaşladığı veya geliştiricilerin C kodunu önemli ölçüde yavaş Montaj koduyla değiştirmeye çalıştıkları birçok örnek vardır. Üst düzey bir dilin geliştiricilerini ve bunun için çalışma zamanı ortamını küçümsemeyin.
user1657170

0

Tabi ki yapabilirsin. Birçok oyun C'de programlanmıştır (DOOM akla geliyor). SDL, C ile yazılmış bir oyun programlama kütüphanesidir.

Tabii ki, büyük bir proje için C ++ kullanmaktan biraz daha zor olabilir, ancak mümkündür.


0

Bence tam bir c oyunu yapmak mümkün. Turbo c derleyicisini kullanarak 2. dönem projemde (nokia 1110 mobile'ın 'uzay etkisi'ne benzer) bir oyun yaptım. Bence (ilk yıl üniversite öğrencisi olarak) başkalarını bilmeden bu şekilde deneyebilirsiniz.

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.