Rozwój gry tylko w C. Czy to możliwe? [Zamknięte]

18

Jestem studentką pierwszego roku w Indiach i chcę zrobić małą grę jako projekt semestralny.

Jestem całkiem dobry w C i uczę się tego szybko, ale chciałem zapytać, czy opracować grę całkowicie w C (bez C ++ lub C #) Chciałbym ich używać, ale do projektów studenckich mamy surowe wymagania dotyczące używania tylko C.

To, czego szukam, to prosta gra z widokiem z góry. Nie będzie miał nic wymyślnego, a nawet elementy wizualne będą zasilane przez proste postacie. Na przykład samochód kontrolowany przez użytkownika może być reprezentowany przez ▓, a krawędzie drogi przez serię |. Co myślisz?

Ishan Sharma
źródło
8
SDL jest napisany w C. OpenGL to C. Czego więcej potrzebujesz?
Kaczka komunistyczna
2
Ponadto Quake odbywa się w C.
Kaczka komunistyczna
Zrób sobie przysługę i skorzystaj z bibliotek Allegro;) alleg.sourceforge.net
o0 '.
1
RollerCoaster Tycoon został zrobiony prawie w czystym montażu, więc dlaczego nie?
Ramon Zarazua B.

Odpowiedzi:

23

Możliwe jest pisanie gier w C. Na przykład Quake II jest napisany wyłącznie w języku C, więc pisanie innych gier w języku C nie powinno stanowić żadnego problemu. Może być lepszym wyborem, jeśli jesteś biegły i czuje się swobodnie w C niż w C ++.

martiert
źródło
2
@Ishan Sharma: W rzeczywistości wiele gier (silników) wciąż jest rozwijanych w C, a przynajmniej bardzo C: ish C ++. Nic nie mówi, że twoja gra w C ++ będzie lepsza (lub nawet lepiej napisana) tylko dlatego, że jest to C ++.
nieważne
6
@ unikaj: To prawda, tylko jeśli programista nie ma pojęcia o tym, jak skutecznie używać C ++. Programy C ++ napisane tam, gdzie pisarz ma podstawową orientację obiektową, są znacznie bezpieczniejsze i bardziej niezawodne niż równoważne programy C.
DeadMG,
8
@DeadMG [potrzebne źródło]
Bob Somers
6
@Bob Somers: Easy. Porównaj std::stringz char*. std::stringzawsze czyści swoją pamięć w każdej sytuacji, każdorazowo przydziela odpowiednią ilość. char*, możesz zapomnieć zwolnić lub podwójnie zwolnić lub nie przydzielić wystarczającej ilości pamięci. Ups Podstawowa logika mówi, że programy w C ++ lepsze i bezpieczniejsze niż programy w C.
DeadMG
12
@DeadMG Dobry programista może pisać dobry, bezpieczny kod w dowolnym języku. Natomiast zły programista może pisać okropny, niepewny kod w dowolnym języku. Biedny cieśla obwinia swoje narzędzia.
Bob Somers
11

Pracuję na bazie kodu AAA MMORPG, która jest czystym C, więc tak.

koderanger
źródło
5
Myślę, że to stawia cię w Cryptic. Czy używasz jakiegoś języka skryptowego?
Dan Olson,
3
Mamy wewnętrzny język wyrażeń, który jest używany przez projektantów w zasadzie do wszystkiego i używamy mieszanki Pythona i Lua do niektórych rzeczy (przetwarzanie offline, zmniejszanie map w DBS dla statystyk), ale nie ma prawdziwego języka skryptowego w samej grze.
coderanger
6

Tak, jest to całkowicie możliwe. Wiele interfejsów API na poziomie systemu operacyjnego, takich jak POSIX i Windows, DirectX i OpenGL, ma interfejsy kompatybilne z C.

DeadMG
źródło
6

Fabien Sanglard napisał artykuł o swoim silniku 3D w C. W reddit ten artykuł wywołał interesującą debatę.

Języki to tylko narzędzia ... Więc używaj ich mądrze. Aby stworzyć dobrą grę, łatwiej jest użyć XNA lub Unity3D. Opanowanie języka C jest dobrym pierwszym krokiem, ale musisz nauczyć się C ++, D, python, lua ... C ++ to bardzo trudny język. Więc używaj go ostrożnie.

Ellis
źródło
3

C jest świetny do tworzenia gier.

Pracuję nad platformówką 3D i nigdy nie miałem żadnych problemów z językiem. Jedynymi problemami są wykrywanie kolizji i cieniowanie, po prostu nic o nich nie wiem, nadal występowałyby w każdym innym języku.

W rzeczywistości uważam to za znacznie łatwiejsze niż języki takie jak C # i Java. Zawsze iteruję na jednostkach używających wskaźników ( przykład z mojego kodu ) i freadoszczędzam dużo czasu na tworzeniu programu ładującego mapy.

Jeśli chcesz orientacji obiektu i modułowości, możesz tworzyć struktury wskaźników funkcji.

Triang3l
źródło
1

Bez wątpienia. Wiele bibliotek przydatnych w tworzeniu gier (takich jak SDL, PhysFS itp.) Ma C API, co bardzo pomaga.

Możesz chcieć zagłębić się w język skryptowy, taki jak lua, jeśli chcesz wykonać rozszerzalne programowanie na wysokim poziomie. Wiele osób zaczyna odczuwać apel w programowaniu frameworka C, który używa lua do takich rzeczy jak AI, wydarzenia itp.

Powodzenia.

James
źródło
1

Prosta odpowiedź na to pytanie brzmi: Możesz zrobić prostą grę tekstową w ten sposób w każdym języku programowania. Nawet asembler pascal, basic lub x86:]

(i nie potrzebuję nic więcej)

Notabene
źródło
0

Tak, jest to możliwe, ale może nie być najbardziej pożądanym sposobem działania. Wiele osób zdaje sobie obecnie sprawę, że zarówno C, jak i C ++ nie są idealne do wielu zadań, a logika gry na wysokim poziomie często należy do tej kategorii.

Jeśli nalegasz na C zamiast C ++ (co nie ma dla mnie sensu, ale dla każdego z nich), najlepiej będzie użyć Lua w połączeniu z C.

W przypadku projektów uczelni wymagających C nie będzie to opcja, ale w przypadku projektów w wolnym czasie byłby to dobry sposób na naukę.

Dan Olson
źródło
Lua jest dobra w fazie programowania, ale przed wydaniem wszystko powinno zostać przeniesione do języka ojczystego, aby zwiększyć wydajność.
Triang3l,
@ Triang3l W ogóle się nie zgadzam. Opisujesz przedwczesną optymalizację. Używanie języka ojczystego NIE gwarantuje szybszego działania kodu. Prawidłowym sposobem na to jest profilowanie kodu, znajdowanie wąskich gardeł i poprawianie tego kodu. Istnieje wiele przykładów, w których programiści próbowali napisać własny kod C, aby zastąpić kod Java, a kod C stał się znacznie wolniejszy lub gdy programiści próbowali zastąpić kod C znacznie wolniejszym kodem asemblera. Nie lekceważ twórców języka wysokiego poziomu i środowiska wykonawczego.
user1657170,
0

Oczywiście, że możesz. Wiele gier zostało zaprogramowanych w C (przychodzi na myśl DOOM). SDL to biblioteka do programowania gier napisana w C.

Oczywiście może to być nieco trudniejsze niż używanie C ++ do dużych projektów, ale jest to możliwe.

rzrscm
źródło
0

Myślę, że można stworzyć kompletne gry typu C. Stworzyłem grę (podobną do „wpływu na kosmos” telefonu komórkowego Nokia 1110) w moim drugim semestrze przy użyciu kompilatora Turbo C. Myślę, że możesz spróbować w ten sposób (jako student pierwszego roku) bez znajomości innych osób.

Sabir
źródło