Robisz grę jako samouczek? [Zamknięte]

19

W mojej szkole kieruję klubem zajmującym się tworzeniem gier. Chciałbym pracować nad projektem tego lata, który mógłbym wykorzystać jako samouczek w następnym semestrze. Nigdy nie robiłem czegoś takiego, więc zastanawiałem się, czy ktoś ma jakieś wskazówki lub pomysły.

Zasadniczo chcę zrobić bardzo prostą grę. Coś jak strzelanka z góry, w której wbiegają wrogowie, aby ich zabić i zebrać trochę łupów. Chcę jednak, aby wszystko było bardzo łatwo modyfikować. Ludzie w klubie mają niewielkie doświadczenie w tworzeniu gier, więc gdybym mógł skonfigurować moją grę w taki sposób, aby ludzie mogli ją łatwo modyfikować i dodawać funkcje, byłoby to dla nich świetne.

Rzeczy takie jak posiadanie klasy wroga, w której zachowanie jest łatwe do grania, lub zmuszanie broni do strzelania w inny sposób / dodawanie nowych broni i nowych łupów. Nawet dodając nowe elementy do gry. Jaki byłby najlepszy sposób na zbudowanie gry, aby umożliwić tego rodzaju plastyczność?

Benixo
źródło
1
Przeczytaj tę odpowiedź na temat Przepełnienia stosu.
Andrew Russell

Odpowiedzi:

16

Tradycyjnym sposobem osiągnięcia tego celu w rozwoju gier jest zastosowanie architektury opartej na danych w systemach gier.

Zasadniczo oznacza to, że kod nie implementuje określonego rodzaju broni (pistoletu) z wyraźnie określonymi wartościami dla zasięgu / obrażeń / penetracji, a raczej wypełnia ogólne pojęcia broni dystansowej (zasięg / obrażenia / penetracja ...) z zewnętrznego źródła danych (do kodu). To zewnętrzne źródło może się różnić od parsowalnych (być może XML) plików wczytywanych z dysku, do plików binarnych lub elementów bazy danych generowanych za pomocą narzędzi wewnętrznych lub zewnętrznych dla samego silnika gry.

Definiując coś w rodzaju wroga, system sztucznej inteligencji może być zaprojektowany do obsługi pewnej liczby ogólnych zachowań (agresywnych, defensywnych, wsparcia, tchórzów), które są następnie modyfikowane przez elementy oparte na danych.

Mój nowy wróg zaczyna się od agresywnego podstawowego zachowania AI z wartościami opartymi na danych dla: -ignore graczy> mój poziom + X -przekaż graczy do X jednostek poza punktem odrodzenia -flee, gdy zdrowie <X-ustalone priorytety zdolności - priorytety umiejętności walki (gdy gracze zbliżają się zbyt blisko)

Bardziej skomplikowany schemat sterowany danymi może pozwolić na zdefiniowanie określonych punktów danych (zdarzeń), w których stan AI przechodzi (maszyna stanów skończonych) do innego stanu (lub nawet szansę przejścia do jednego z N innych stanów), umożliwiając użytkownikom zdefiniowanie skomplikowana hierarchia zachowań.

Wszystko to oczywiście wymaga więcej pracy niż tylko jawnego kodowania zachowania, ale jest to zabawne wyzwanie, aby umożliwić użytkownikom tworzenie treści bez modyfikacji źródła.

Do zdobycia są punkty bonusowe:

  • jeśli możesz dynamicznie aktualizować dane i wyświetlać zmiany w silniku gry bez ponownego uruchamiania aplikacji
  • jeśli tworzysz przyjazne dla użytkownika interfejsy danych, pozwalając użytkownikom korzystać z interfejsu do interakcji z danymi zamiast bezpośrednio edytować pliki tekstowe (xml lub cokolwiek)

W przypadku gry instruktażowej skierowanej do bardziej technicznego tłumu większość pracy polega na zaprojektowaniu klas / obiektów, które udostępniają użytkownikom czyste interfejsy, które z kolei mogą być oparte na danych.

Christopher Larsen
źródło
Niezła odpowiedź! +1
Atakowanie
Dzięki za wkład :)! Czy znasz jakieś witryny, które pokazałyby mi, jak zaimplementować tego rodzaju kod? Nigdy nie robiłem gier z takimi zewnętrznymi źródłami. Chociaż zdecydowanie chcę, aby kodowali w XNA w klubie, prawdopodobnie zrobię coś więcej w stylu klas i obiektów, które mogliby z łatwością odziedziczyć w swoich klasach. Ale na pewno przyjrzę się temu,
Benixo,
Świetny sposób na zrobienie tego wymaga własnego parsera konfiguracji, aby umożliwić ładowanie bardzo prostych struktur opartych na danych. Zasadniczo kluczem do każdego samouczka jest nauczanie fragmentów, więc abstrakcja jest absolutnie kluczowa. Dobrym ćwiczeniem może być zaprojektowanie prostego interfejsu GUI, który pozwala użytkownikowi definiować i tworzyć nowe typy broni.
spowolniłaviar
Najczęstszymi aspektami opartymi na danych w grach są poziomy. Nawet jeśli wszystko inne jest zakodowane na stałe, projekty poziomów (tj. Gdzie umieszczana jest sceneria, gdzie umieszczani są wrogowie itp.) Są prawie zawsze definiowane w plikach danych ładowanych przez grę. Jego drugi punkt bonusowy opisuje narzędzie do edycji poziomów.
jhocking
Proces zapisu / odczytu obiektów na / z dysku jest znany jako „de- / serializacja”. Pod tym terminem możesz znaleźć przydatne tutoriale.
Exilyth,
1

Jeśli szukasz kilku pomysłów na rozpoczęcie projektu i budowania go krok po kroku, aby można go było przekształcić w samouczek, zapoznaj się z XNA Game Programming Adventures . Autor ma skonfigurowanych kilka samouczków, wraz z objaśnieniami i kodem źródłowym, które są zwiększane krok po kroku.

Bart
źródło
0

Proponuję zajrzeć do samouczka Java Game Development na stronie www.thenewboston.com

Być może nie jest to dokładnie to, czego szukasz pod względem kolesi z bronią i całym tym jazzem, ale daje to miły krok po kroku podział wielu kluczowych czynników w rozwoju gry. Prezenter „Bucky” ma również wyluzowany styl nauczania dla zabawy. Cieszyć się.

Jonny
źródło