Co powinno być w silniku gry 2D? [zamknięte]

Ok, więc skończyłem pisząc własny silnik gry oparty na XNA, i zastanawiam się tylko, co jeszcze muszę zrobić, aby kompletny silnik.

To jest to co jest w silniku:

  • Fizyka (Farseer Physics)
  • Particle Engine (Mercury Project)
  • Kamery 2D
  • Obsługa Wejść
  • Zarządzanie ekranem (menu, Ekran pauzy itp.)
  • Sprite (Animacja, Arkusze Sprite)
  • i XNA takie rzeczy jak dźwięk.

Czy brakuje mi coś, co może być kluczowe dla silnika gry?

 31
Author: Khalid Abuhakmeh, 2009-04-13

16 answers

Motyw lub rynek dla Twojego silnika. Jeśli robisz coś poza podstawowym silnikiem graficznym, będziesz chciał skoncentrować się na rynku dla swojego silnika, takim jak RPG, strategia, puzzle, platformówka, akcja lub FPS (ok, Nie FPS).

To pomoże Ci wskazać kierunek, w którym musisz iść, aby dokonać dalszych ulepszeń silnika bez pytania nas. Silnik jak powiedzmy, Unreal Engine, może robić wiele rzeczy, ale to, co robi najlepiej, to to, do czego jest stworzony, Gry FPS. Podobnie, powinieneś dostosować swój silnik tak, aby pasował do konkretnego pola zainteresowań, a zatem został wybrany do tego typu rozgrywki.

Możesz uczynić go ogólnym do pewnego stopnia, ale zdaj sobie sprawę, że im bardziej uogólniony jest Twój silnik, tym trudniej jest go zaprogramować, zarówno pod względem czasu, jak i umiejętności. Inni programiści są również mniej skłonni do podnoszenia ogólnego silnika (chyba że to wszystko), jeśli dostępna jest bardziej konkretna Platforma. Lub po prostu napisać własne od modyfikacji generalized engine jest tak samo trudny jak tworzenie własnego.

 18
Author: Organiccat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 14:36:19

Podchodzisz do tego w sposób odwrócony.

Co powinno być w Twoim silniku jest następujące:

cały kod, który okazał się być wspólny między pierwszą a drugą grą.

Najpierw napisz grę. Nie pisz silnika, bo jak się dowiedziałeś, nie wiesz co powinien zawierać, ani jak powinien być zaprojektowany. Zamiast tego napisz grę.

Gdy już będziesz miał tę grę, napisz kolejną grę. Wtedy, kiedy to zrobisz, sprawdź kod drugiej gry. Ile z nich zostało ponownie wykorzystane z pierwszej gry?

Wszystko, co zostało ponownie użyte, powinno zostać przekształcone w oddzielny projekt. Ten projekt jest teraz twoim silnikiem gry.

To nie znaczy, że nie powinieneś planować, ani nie powinieneś próbować pisać ładnego kodu. Ale upewnij się, że pracujesz nad czymś konkretnym, czymś, co odróżnia dobre wdrożenie od złego. Dobra implementacja gry, to taka, która działa, jest zabawna i nie crash. Napisz swój kod, aby najpierw osiągnąć te rzeczy.

Dobra implementacja silnika? To trudniejsze. Jaka jest dobra implementacja renderera? Framework AI? Układu cząstek? Ostatecznie, jedynym sposobem na określenie, czy masz dobry silnik, jest sprawdzenie, jak dobrze działa w rzeczywistej grze . Więc jeśli nie masz gry, nie masz sposobu, aby ocenić swój silnik. A jeśli nie masz sposobu, aby ocenić swój silnik, nie masz sposobu, aby ocenić, czy którykolwiek z kod, który piszesz, jest naprawdę przydatny.

 57
Author: jalf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-19 08:43:29

Jeszcze kilka rzeczy:

  • Path finding - bardzo przydatne dla AI
  • AI - być może-zależy od tego, jak ogólny ma być silnik.
  • wysokie wyniki
  • powtórki - sprawia, że wysokie wyniki są o wiele bardziej interesujące, ponieważ można je oglądać.
 12
Author: Zifre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 14:46:18

Kilka pomysłów:

    [3]} sztuczna inteligencja (być może tylko proste narzędzia AI, takie jak algorytmy wyszukiwania ścieżek)
  • zapisanie całości lub części stanu gry(do zawieszenia i ponownego uruchomienia w późniejszym czasie lub zapisania wysokich wyników).
 6
Author: gnovice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 15:14:34

Myślę, że spełniłeś ogólne wymagania silnika 2D. Jedyne czego mi na tej liście brakuje to:

  • biblioteka GUI

Również w celu ułatwienia procesów rozwojowych:

Możesz również dodać kolejną warstwę na istniejącym materiale XNA:

  • całkiem naga sieć / Lobby realizacja
  • bardziej abstrakcyjna obsługa wielu kontrolerów (DropIn/DropOut podczas sesji gier, jak zobacz Resident Evil 5 Coop) - może oparta na zdarzeniach

W końcu możesz dodać jakieś shadery "ready2use". Może zainspiruj się wycofanym FaceWound (od dewelopera "Garry' s Mod").

 5
Author: Marcel Jackwerth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 15:01:38

To zależy od gry, ale inną rzeczą często potrzebną jest dobry framework sieciowy.

Wiele nowoczesnych gier, w tym gry 2D, wydaje się mieć jakąś formę networkingu.

 2
Author: Reed Copsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 15:01:11

Przyspieszenie 3d powinno być w silniku 2D.

Korzystanie ze sprzętu 3d, który większość ludzi ma w dzisiejszych czasach, jest najlepszym sposobem na uzyskanie niesamowitej wydajności gier 2D...

 1
Author: dicroce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 13:59:57

Dobre wykrywanie kolizji jest bardzo pomocne. Jeśli zaimplementujesz Go efektywnie, to naprawdę skraca czas potrzebny na każdą klatkę. Poza tym, w moim silniku (dla Pygame) mam metodę rozdzielenia ekranu głównego na kilka podscreenów, co uważam za przydatne.

 1
Author: Nikwin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 15:14:33

Proste wykrywanie kolizji pixelperfect. Nie Farseer Physics. Proste procedury rysowania, takie jak drawline, drawcircle itp.

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-15 11:42:55
  • Framework animacji, dzięki któremu możesz powiedzieć: weź ten sprite, przesuń go w tym kierunku, podążając za tą ścieżką, używając tej prędkości, przyspieszenia i tym podobnych
  • podstawowy system GUI. Nie implementuj całego systemu Windows, ale podstawowe rzeczy, takie jak wskaźnik i przycisk, i takie - keep it basic
  • komponent Debugujący do wyświetlania FPS, liczb sprite ' ów i takich

Również dobrą rzeczą jest, aby niektóre gry, a następnie można szybko zobaczyć, co powtarza się do każdej gry, a potem sprawdź, jak dostać to do silnika.

 1
Author: Jesper Blad Jensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-15 11:47:54
  • system oświetlenia 2d to dobra, zaawansowana funkcja. Możesz do tego użyć Krypton.
  • Edytor Map. Lub nawet lepiej obsługuje dowolny format map kafelkowych, kompatybilny z "edytor map kafelkowych ". Więc możesz użyć kafelków.
  • Scheduler / Timer dla akcji gry.
  • efekty wycierania ekranu, takie jak obracanie strony, zanikanie itp. aby zrobić ładne przejścia między ekranami.
  • warstwy gry z kompilacją w paralaksie też by się przydały.
  • w konsoli do gier do przetworzenia polecenia lub skrypty bez restartu.
  • Łatwe ładowanie atlasu tekstur jako sprite ' ów lub animacji.
 1
Author: AvrDragon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-30 08:24:09

Niezła Robota, My (ja i kilku moich znajomych) też pracujemy nad silnikiem gry, Mamy już wszystko, o czym wspomniałeś, ale co więcej, mamy następujące informacje.

  • audio manager : prosta klasa do obsługi muzyki w tle i dźwięków efekty w XNA.
  • video manager : to nie jest skomplikowane, prosta klasa do obsługi wideo gra w XNA.
  • effects manager : jest odpowiedzialny za takie rzeczy jak bloom, blur, kolory czarny / biały .. itd.

Powodzenia:)

 1
Author: Zero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-03 07:36:30

Narzędzie do powtarzania kafelków. Coś, co pozwala użytkownikowi dodawać / tworzyć płytki i manipulować krawędziami w celu uzyskania gładkiego wzoru repeat.

 0
Author: Neil N,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 15:00:54

W zależności od typu gry docelowej, Dołącz Wykres nawigacyjny z adnotacjami do węzłów i krawędzi. (Dobre dla wielu gier, ale nie tak bardzo dla token side scrollers, które są wykonane z silnikami grafiki 2D)

  • komponent do ich generowania (za pomocą algorytmu flood fill).
  • pamiętaj, aby uwzględnić wszystkie główne algorytmy wyszukiwania/planowania ścieżek(a * /Dijkstra / etc.) do trawersowania tych wykresów.

Pułapką tego jest to, że będziesz musiał zdefiniować, do czego służy "Mapa" silnika, co może ograniczyć użytkowników silnika.

Rzeczy pokrewne:

  • wyzwalacze oparte na lokalizacji (gracz wchodzi w niewidoczny okrąg i coś się dzieje - przerywnik kolejki, rozpoczęcie zasadzki itp.). Powiedziałbym, że zapewnij klasę bazową dla wyzwalacza i zaimplementuj kilka podstawowych, aby pokazać, jak to się robi(tj. podbieraki do broni itp.)
  • Niektóre silniki gry implementują sieć (choć jest to część 'XNA stuff')
 0
Author: Steven Evers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 15:29:41

Najbardziej przydatną rzeczą do włączenia przede wszystkim byłyby narzędzia do łatwego korzystania z silnika. Może użyj silnika, aby stworzyć narzędzia. Jestem pewien, że znajdziesz wiele wad w ten sposób.

 0
Author: Dunk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-13 17:59:10

Um. Ta lista jest listą" wewnętrznych". Aby wielki silnik jest zrobić wielką "zewnętrzną" listę. Spójrz na przykład na UE3 - jest tutaj ze względu na świetne narzędzia. Potrzebne są narzędzia do tworzenia świata, do tworzenia optymalnych pakietów zasobów (powinno być też na wewnętrznej liście; -)), do specyfikacji obiektów kolizji itp. Dodatkowo, aby dodać do Organiccat answer należy zdecydować się na poziomie technologicznym. Możesz wybrać proste sprity lub możesz chcieć fantazyjnych efektów (więc shadery są potrzebne, a dzięki temu need infrastructure)

 0
Author: Community,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:24:53