W jakie gry można „zarobić skrzydła”? [Zamknięte]

306

Uważam, że aby zostać dobrym twórcą gier, musisz tworzyć gry.

Z perspektywy programisty , jakie są dobre gry dla początkujących, które zabrudzą Ci ręce? Jakie umiejętności i wyzwania uczy każda z tych gier?

Drew
źródło

Odpowiedzi:

217

Breakout

Łatwa gra, ponieważ nie musisz się zbytnio przejmować (jest to tablica wartości klocków - jeśli masz tylko jeden kolor klocka, jest to tablica flag), nie ma żadnej sztucznej inteligencji i możesz zrobić odrobinę fizyki, aby piłka odbiła się poprawnie.

Pasjans

Zasady są nieco bardziej złożone niż Breakout, a interfejs do nich jest zupełnie inny. Zmusza do myślenia o różnych metodach wdrażania gry. tzn. to, co działa w jednej grze, niekoniecznie musi być użyte w innej.

Pac-Man

Ten jest fajny, ponieważ możesz popracować nad odrobiną sztucznej inteligencji. Poprowadzenie duchów za graczem (ale nie za dobrze - chcesz, żeby gracz miał szansę) może zostać szybko zaimplementowane, a będziesz mieć zabawną grę, którą możesz ulepszyć i pochwalić się znajomym i rodzinie (pozytywne opinie są zawsze dobrze, gdy zaczynasz).

Uważam, że jeśli szukasz inspiracji we wczesnych grach wideo, możesz znaleźć mnóstwo pomysłów, które można stosunkowo łatwo wdrożyć. Ponadto możesz uciec od super prostej grafiki i dźwięków, ponieważ i tak kopiujesz coś tak prostego. Pozwala to skupić się najpierw na podstawach - uruchamianiu pętli gry, wymyślaniu, jak przenieść piksele na ekran, odtwarzaniu dźwięku, utrzymywaniu wyniku, uzyskiwaniu wkładu gracza w grę.

Prawie naprawdę nie ma znaczenia, którą grę wybierzesz jako pierwszą - po prostu wybierz coś prostego, z którym możesz uzyskać szybkie wyniki, w ten sposób możesz przejść następnego dnia i zrobić kolejną. I kolejny. I jeszcze jedno - im więcej będziesz robił, tym bardziej będziesz się naciskał i ostatecznie będziesz tworzyć złożone gry, zanim się zorientujesz.

Dennis Munsie
źródło
49
+1 przy Breakout. Miałem wielu twórców gier PRO, którzy mówili mi, że ilekroć zdobywają nową technologię, uczą się jej, tworząc najpierw Breakout.
Jeff
2
+1 Breakout była pierwszą grą, którą zrobiłem =). Zgadzam się również na próbę odtworzenia wczesnych gier wideo (z własnymi zwrotami akcji!). Koncentruj się na koncepcjach, a nie na zasobach.
user384918,
16
@PhillC, nie, nie warto dzielić
Simurr
13
Zapomniałeś o tetris: była to druga gra, którą zaimplementowałem w szkole średniej :)
Emiliano
2
czy moglibyście podać linki do swoich wybuchów? Uwielbiam tę grę i chciałbym spróbować wszystkich przeróbek
fent
256

Zdecydowanie polecam początkującym programistom rozpoczęcie najprostszej gry, którą naprawdę chcą napisać . Jak wspomniał Matt Rix, ogromna część pisania gry kontra demo przebija tę cholerną rzecz do końca - kredyty, menu, testowanie gry, wysokie wyniki, pauza, testowanie gry, poziomy trudności, czyste przejścia stanu gry, gra testowanie itp. Te rzeczy zajmują co najmniej połowę czasu, który zamierzasz włożyć, i to po prostu nie jest zabawne. To nie jest Więc jeśli nie podoba ci się ta koncepcja i nie masz prawdziwej motywacji, poddasz się i przejdziesz dalej, zanim gra stanie się grą .

Jeśli chcesz napisać RPG, wymyśl najprostszą i najłatwiejszą do zarządzania koncepcję RPG, którą możesz wymyślić , co chcesz zrobić i to zrobić. To samo, jeśli chcesz zrobić strzelankę science fiction, platformówkę o tematyce horroru lub cokolwiek innego. Wybierz coś, co skończysz, które nadal będziesz chciał ukończyć po zakończeniu zabawy, ale wciąż czeka Cię dziesiątki godzin pracy, zanim naprawdę skończysz.

Najlepsza gra, w której „zarobisz skrzydła”? Ten, który ukończyłeś. Nie obchodzi mnie, ile napisałeś w połowie gotowych wersji demo PONG / Breakout / Galaga / Tetris, nie jesteś programistą dopóki nie wydasz faktycznie ukończonej gry.

Plus, nikt nie chce grać kolejną wersję tych 40-letnich gier, a przynajmniej niektóre z punktu zapisu gry jest dla ludzi, aby grać , prawda?

Bob Montgomery
źródło
3
Chcę potrójnie zagłosować na tę odpowiedź!
Iain
2
+1 za komentarz na temat wydania gry. Uruchomienie gry to tylko około 30% całego procesu, IMO. Ciągłe iterowanie w mechanice, dopracowywanie wszystkiego, aby wyglądało na prezentowalne, ściganie tych paskudnych błędów, które występują tylko w bardzo specyficznych scenariuszach, i faktyczne możliwość skupienia się tylko na tym, co należy zrobić, to pozostałe 70%.
Dennis Munsie
1
+1 za powiedzenie tego, co chcę powiedzieć. Moja pierwsza gra to palmgadget.com/palmgo.html Można to zrobić, ponieważ uwielbiam grę Go i naprawdę używam jej do rejestrowania moich gier w klubie. Najpierw „Scratching Your Own Itch”.
ohho,
16
Podoba mi się ta rada, ale może być niebezpieczna. W końcu ta mentalność właśnie dlatego tak wielu ludzi odwiedza fora deweloperów gier i mówi: „Nigdy wcześniej nie grałem, zacznę MMORPG”. Powiedziałbym, że powinieneś zacząć od gry, którą lubisz, od ograniczonej liczby dobrych projektów na początek. Więc jeśli naprawdę nienawidzisz Tetris, to nie rób tego. Ale zamiast tego zrób Breakout, a nie tylko przypadkową grę, która ci się spodoba.
jhocking
185

Jakiś czas temu opublikowałem tę drabinę w TIGsource. Zaczyna się od bardzo podstawowego do bardzo złożonego.

  • „Odgadnij numer” / Hangman (podstawowy interfejs, wybierz dane z bazy danych)
  • Tic-Tac-Toe / Rock-Paper-Scissors (rozgrywka turowa, przeciwnik AI)
  • Arkanoid / Pong (kolizje, stabilna liczba klatek na sekundę, wynik, poziomy)
  • Tetris (struktury danych i ich związek z grami)
  • 1942 / Shoot-em-up (wrogowie, pociski)
  • prosta gra platformowa / jednoręki bandyta, jeśli Twój silnik robi platformówki (zderzenia grawitacyjne)
  • Bomberman / Pacman (ruch oparty na płytkach, złożona sztuczna inteligencja wroga)
  • Gra dla dwóch graczy dowolnego z powyższych typów (wejście dla dwóch graczy)
  • Roguelike / Diablo (zarządzanie zapasami, wiele wrogich AI, zapisywanie i ładowanie złożonych stanów gry)
  • Faceball / Wolfenstein 3D (podstawowy ruch i rendering w 3D)
  • Sieciowa gra turowa (podstawowa sieć)
  • Gimmicky platformówka trzecioosobowa (fizyka, złożone ruchy 3D)
  • Gra sieciowa w czasie rzeczywistym (synchronizacja klient-serwer, opóźnienie)
  • MMORPG (świat trwały)
zaratustra
źródło
7
Możesz lepiej wyjaśnić, czego chcesz się tutaj uczyć. Twoje krótkie notatki nie są zbyt opisowe / pomocne.
SpoonMeiser
57
Chociaż jest to ostatni, myślę, że MMORPG musi pójść dalej. Niesamowita lista. +1
は る と
6
Świetna lista, choć myślę, że cały aspekt drabiny załamuje się po Pacmanie. W tym momencie wiesz wystarczająco dużo, aby przejść i zrobić jakąkolwiek grę; Nie sądzę, że musisz rozwinąć Diablo, zanim rozwiniesz Wolfenstein. Wszystko do Pacmana powinieneś zrobić w porządku.
jhocking
5
„Trwały świat” realnie nie docenia różnic między MMORPG w poprzednich opcjach.
Malabarba
1
Możesz poradzić sobie z „Persistent World” również w grach innych niż MMORPG (np. Roguelike).
ashes999
64

Najważniejsza zasada uczenia się programowania gier: nauka programowania jest trudna. Nauka projektowania gier jest trudna. Uczenie się, jak tworzyć dobrą grafikę lub dźwięk w grach jest trudne. Próba zrobienia wszystkich tych rzeczy jednocześnie jest przepisem na porażkę. Naucz się jednej rzeczy na raz.

Wniosek: zaprogramuj grę, w której projekt, sztuka i dźwięk są już gotowe. Twórz klony, a nie oryginalne gry.

Na moich zajęciach zawsze polecam rozpoczęcie tych gier, aby:

1) Tetris. Sztuka to kolorowe prostokąty, które nawet całkowity klutz może narysować w Microsoft Paint. Nie potrzebujesz dźwięku. Programowanie jest stosunkowo proste, ale wciąż wymaga kilku kluczowych rzeczy: zrozumienia różnicy między wewnętrznym stanem gry a tym, co jest wyświetlane na ekranie; umiejętność rysowania na ekranie, kropka (prawdopodobnie obejmująca duszki i blitowanie); możliwość akceptowania danych wejściowych użytkownika w czasie rzeczywistym, a nie tylko za pomocą getch () lub scanf (), gdzie trzeba na nie poczekać.

2) Breakout / Arkanoid. Sztuka wciąż jest kolorowymi prostokątami i nadal nie potrzebujesz dźwięku. Wykorzystuje wszystkie podstawowe koncepcje Tetris oraz podstawowe wykrywanie kolizji i fizykę 2D, ponieważ piłka musi się płynnie poruszać i odbijać.

3) Typ Gradius / R. Prawdopodobnie możesz znaleźć kilka darmowych zestawów kafelków, aby to zrobić. Tutaj tło się przewija, więc musisz dowiedzieć się nieco więcej o tym, jak działa pamięć graficzna, korzystając z technik takich jak przewracanie stron, podwójne buforowanie i rysowanie elementów poza granicami widocznego ekranu. Masz również tendencję do odradzania się wroga i pocisków, więc musisz nauczyć się sprzątać po sobie (tj. Pozbyć się wrogów i pocisków, które opuszczają ekran, aby Twoja gra nie wyciekła z pamięci jak sito).

4) Super Mario Bros. Podobnie jak w poprzednim projekcie przewijania, z tym że przewijanie jest teraz pod kontrolą gracza i nie jest automatyczne. Musisz również poradzić sobie z grawitacją i wszystkimi zabawnymi rzeczami związanymi z kolizją (np. Nie spadanie z podłogi tylko dlatego, że w ostatniej klatce byłeś kilka pikseli powyżej i chcesz przejść do kilku pikseli poniżej w następnej klatce ). Zauważ też, że grawitacja jest warunkowa: wpływa na gracza i niektórych wrogów, ale zazwyczaj nie na platformy lub pływające monety lub cokolwiek, co jest nieco inne niż w prawdziwym świecie.

Jeśli potrafisz zrobić wszystkie cztery z nich, powinieneś być w stanie zrobić praktycznie dowolną grę 2D, jaką chcesz; wszystkie narzędzia są tam. Jeśli chcesz stworzyć grę 3D ... najpierw naucz się 2D, ponieważ jest to o wiele łatwiejsze i nie musisz rozumieć matematyki jako dogłębnej i musisz zrozumieć rzeczy 2D ... a potem, kiedy będziesz wygodnie, zacznij pracować z kilkoma podstawowymi narzędziami 3D (bibliotekami takimi jak Torque lub Unity lub grami typu open source, takimi jak oryginalny Doom i Quake).

Powodzenia!

Ian Schreiber
źródło
39

To jest naprawdę dobre pytanie. Nie wiem, gdzie jesteś, więc zamierzam rzucić się w niebo i zakładam, że nigdy nie napisałeś linii kodu w swoim życiu. Odetnij każdą część nosa, która cię obraża, aby nadużyć frazy.

Myślę, że faktycznie odpowiem na nieco inne pytanie niż to, które zadałeś, i podam przykłady, aby zaspokoić pytanie, które zadałeś na miejscu. Powód, dla którego tak to robię, jest niewielki, ale uważam, że znaczna różnica jest z punktu widzenia: ważne są nie konkretne gry, ale sposób myślenia projektantów.

Wiesz, jak ludzie mówią o tym, że powinieneś uczyć się różnych języków programowania, aby jeść ich nastawienie, ich serca i wątrobę, a tym samym zdobyć ich potężną moc? Jest w tym prawdziwa prawda - po twoim pierwszym czystym lub prawie czystym języku programowania, nawet w językach imperatywnych, skończysz pisać w dużej mierze bez efektów ubocznych, ponieważ są one o wiele lepiej zdefiniowane i wszystko, co piszesz nawet w językach innych niż ta forma będzie dla niego lepsza. Nie ma szczególnego znaczenia, jakim jest językiem - haskell, ml / ocaml / smlnj, formulaONEONE, c ++ szablony, cokolwiek - nadal będziesz uczyć się, jak wykonywać wiele klas pracy bez polegania na stanie efektu ubocznego. Gdy po raz pierwszy nauczysz się solidnego języka programowania zbliżonego do maszyny, „ zamierzam dowiedzieć się o abstrakcji typu rozmiaru. Gdy po raz pierwszy nauczysz się języka deklaratywnego lub ograniczającego, dowiesz się o ograniczaniu jako o uznanym narzędziu. Kiedy po raz pierwszy nauczysz się języka wyszukiwania powrotnego, nauczysz się modlić Ia! Ia! C'thulhu F'tagn Nagn !, a potem wracamy do jedzenia serc i wątrób, a krąg życia się wypełnia.

Projekt gry nie jest inny. Nie musisz uczyć się żadnej konkretnej gry, równolegle z konkretnym językiem, ale raczej nauczyć się jakiejś reprezentatywnej gry, która obsługuje ten sposób myślenia, jak rodziny charakterystyczne dla języka. Jest też dużo jedzenia wątróbek i serc. Zdobądź krakersy z pieprzem.

Gag tutaj (przynajmniej tak widzę) polega na tym, że chcesz omówić dużą listę tematów. To jak odznaczanie biegłości na karcie postaci - udostępniasz sobie więcej mechanizmów, dzięki którym poradzisz sobie w danej sytuacji. Tak, są na poziomie, ale posiadanie punktu lub dwóch w tak wielu rzeczach, jak to możliwe, oznacza, że ​​gdy przychodzi czas na użycie jednego, nie zaczynasz od zera i wiesz, jakie taktyki są dostępne abyś mógł skalować się o.

Więc spójrz.

Najpierw chcesz obciąć zęby. Są one również przydatne, gdy uczysz się celować na nową platformę lub gdy wracasz do zdrowia po amnezji. Te mają być szybkie, a nie niesamowite.

W porządku:

  1. Kontrola ekranu. Bluescreening świetnie się do tego nadaje, ponieważ wtedy masz ważny powód, by wierzyć, że jesteś na najlepszej drodze do bycia Microsoftem.
  2. Sprawdzanie poprawności danych wejściowych. Fooscreen, gdzie foo jest niebieski dla góry, czerwony dla dołu itp. Sprawdź wszystkie klucze; istnieje więcej niż wystarczająca liczba kolorów, lub możesz czterokolorową mapę, jeśli absolutnie musisz uratować szkarłat na ważniejsze rzeczy.
  3. Renderowanie tekstu i duszka. Ponieważ masz również sprawdzanie poprawności danych wejściowych, gra z pamięcią kafelków nie jest złym pomysłem.
  4. Timery Czas na klona Mario lub Arkanoida.
  5. Dźwięk i muzyka. Popraw klona Mario. Ale niewiele.

Gdy już je zdejmiesz, możesz rozpocząć atak na platformę i nauka może się rozpocząć.

Nie są w określonej kolejności. Możesz je zmienić według własnego uznania. Z każdym podam garść przykładów, ale nie są one normatywne; jeśli inna gra daje ci to samo doświadczenie i jest wystarczająco mała, aby wziąć udział w serii lekcji, możesz ją zamienić. Ze względów praktycznych dobrze jest biegle renderować ekran i wprowadzać dane stosunkowo szybko; będziesz ich dużo używał. Poczekaj kilka gier, zanim spróbujesz napisać lekcje abstrakcji; Państwo nie chce być złapany w naiwnej abstrakcji.

  • Animacja. Niemal wszystko, co robisz, może wywoływać animowane duszki. Uzyskaj niezależny silnik animacji za pasem, nawet jeśli jest to programista. Stworzenie prostej układanki, której płytki pulsują.
  • Kompleksowa punktacja. Zbierz wszystkich pięciu wrogów w skrzydle? Premia. Wylądować trzy ciosy z rzędu? Premia. Pokonaj cały poziom, nie tracąc kuli? Ogromny bonus.
  • Znalezienie drogi. Potrzebuje tego wiele gier, ale gra typu tower defense jest najprostsza. Możesz zacząć od szerokości i głębokości, jeśli nigdy wcześniej tego nie robiłeś, ale nie skończysz, dopóki przynajmniej raz nie zaimplementujesz A * od podstaw (NOT COPIED CODE).
  • Zachowanie wroga. Głupie zautomatyzowane zachowania zostaną pokryte przez twoje mario, ale zachowania reaktywne są również ważne. To dobry pretekst do zbudowania gry taktycznej lub gry typu roguelike. (Ostrzeżenie: będziesz pracował nad roguelike do końca życia.)
  • Dynamiczne oświetlenie 2D. To także dobry powód, aby napisać roguelike. Arccasting oparty na łuku jest ważnym sposobem patrzenia na pasmowanie i separację, co z kolei jest ważne dla wielu struktur danych.
  • 2d Fizyka. To pojawia się w wielu grach, na wielu poziomach szczegółowości. Wypróbuj platformówkę (mario-ish), która może być bardzo uproszczona; gra w czołgi (spalona ziemia), która może być równie uproszczona; i ostatecznie gra taka jak N the Ninja, która sprawia, że ​​radzisz sobie z bieganiem pod kątem, pędem i tak dalej (możesz to zrobić całkiem prosto z systemem kolizji obwiedni wyrównanym do osi). Fizyka i kolizja są ze sobą ściśle powiązane.
  • Wykrywanie kolizji. Istnieją absurdalnie proste przypadki, takie jak siatki Arkanoidy i klony Mario, umiarkowanie złożone przypadki, takie jak N the Ninja i naprawdę złożone przypadki, takie jak gry fizyki w piaskownicy (niesamowita maszyna, nowoczesne arkanoidy, takie jak BreakQuest, itp.) W wielu przypadkach możesz sobie poradzić z coś takiego jak AABB , ale jeśli masz matematykę, może być przydatne wdrożenie czegoś kompletnego. Przynajmniej zapoznaj się z pełną biblioteką, taką jak APE lub Box2D.
  • Relacje ryzyko / nagroda w satysfakcji z gry. Proste gry w kości (przejdź do czegoś, co nazywa się „Skunk” z lat 50.) i ryzykowne gry planszowe (life, candyland) są świetnymi przykładami prostych szybkich sposobów na nauczenie się tego poprzez działanie.
  • Ekspresyjna odmiana w mechanice. Przytnij się do niewielkiej liczby reguł, a następnie naucz się czerpać z nich dużą różnorodność. Niestandardowe gry karciane to świetny sposób, aby z tym pracować; spójrz na talie Dvoraka i gry ze świata rzeczywistego, takie jak Mille Bornes, Rage i Uno, a następnie stwórz kilka własnych. Nie mogą być podobne.
  • Wygenerowana treść. Proste gry strategiczne oparte na mapie, roguelike i niektóre gry logiczne to świetne sposoby na nauczenie się tego. Punkty bonusowe, jeśli jest to rodzaj gry, która nie jest znana z generowania treści.
  • Styl. Nie spieprz się: to wielka sprawa. Stwórz grę, a następnie zmień ją na cztery zupełnie różne gry. Naprawdę różne Jedna nawet gra dla dzieci. (Pomyśl o tym: Mega Człowiek ma sens jako przygoda czarnoksiężnika do piekła lub jako Łotr z X-Men, lub ...) Teraz, zdobądź cztery grupy ludzi, aby zdobyć jedną z twoich gier. Następnie niech zdobędą kolejną grę, przeciwnie do ruchu wskazówek zegara, wokół ringu i tak dalej. Zauważ, jak radykalnie zmieniają się ich wyniki w zależności od tematu i wcześniejszych oczekiwań.
  • Tworzenie sekwencji planu gracza. Gry logiczne są najczystszym sposobem na rozwiązanie tego problemu.
  • Zarządzanie zasobami
  • Ulepszenia
  • Ciśnienie czasu rozkręcania

... eh. Znudziłem się.

John Haugeland
źródło
11
Doskonała odpowiedź. Naprawdę rozczarowujący koniec. Byłoby wspaniale, gdybyś mógł ponownie to sprawdzić i jakoś związać, aby uzyskać spójne zakończenie.
Ricket
1
Na zakończenie, co powiesz na niektóre instrukcje gotowania wątroby ? giantitp.com/comics/oots0738.html
Cyclops
4
To lekcja życia fantastycznie zamaskowana jako post na temat programowania gier.
sdasdadas
30

Tetris

Bardzo popularna gra, wiele klonów open source, które mogą się rozerwać, jeśli utkniesz. Uczy podstaw grafiki 2D, obsługi danych wejściowych, oceniania itp.

Następnie weź ten oryginalny pomysł i uruchom go. Nauczyłem się podstaw grafiki 3D / opengl, pisząc trójwymiarową wersję Tetris dla mojej klasy grafiki komputerowej na studiach.

Bryan Denny
źródło
2
Lub „Kolumny”, jeśli jesteś Sega;)
Andrew Russell
Muzyka tematyczna Cue Tetris ...
Nick Bedford
3
qntm.org/hatetris (okej, brakuje mu motywu muzycznego, ale chciałem tylko go połączyć ...)
user384918
1
@bloots wow, to jest złe
Bryan Denny
Woot! oto moja strona .
Steven Lu
25

GameDev.net ma dobry artykuł zalecający rozwój gier, aby stopniowo uczyć się o rozwoju gier. Moją ulubioną radą z tej listy jest dopracowanie tych gier. Całkowicie wykończony, do stanu umożliwiającego zwolnienie.

Lista jest następująca (niektóre z nich podano w innych odpowiedziach):

  1. Tetris
  2. Breakout
  3. Side Scroller / Platformer
Colin Gislason
źródło
Brakowało Ci Pac-Mana, Galagi i Gauntleta z artykułu, który podłączyłeś
Adam Harte
15

Lubię zaczynać wszystkich moich facetów od Monopoly. Zazwyczaj używam „kodu kata” Monopolu Bretta Schucherta jako podstawy ćwiczenia, ale dużo do niego dodam. Jest kilka powodów, dla których naprawdę lubię to robić.

  1. Dbam o dobre praktyki kodowania (wzorce projektowe, TDD, SOLID, ciągła integracja itp.) I nakładam wiele ograniczeń na moich programistów, którzy wykonują to ćwiczenie.

  2. Prawie wszyscy znają zasady Monopolu, a całą grę można ukończyć w ciągu jednego dnia. Daje to nowym programistom szybką wygraną i naprawdę zwiększa ich zaangażowanie.

  3. Początkowe wymagania zaczynają się od kontrolek klawiatury, ale później dodam wymóg dotyczący kontrolek myszy. To powoduje, że programiści zastanawiają się nad kilkoma rzeczami, jak przefakturować istniejący kod, programować zmiany części systemu na interfejsy zamiast konkretnych klas, lepsze / właściwe abstrakcje, co testować jednostkowo, czego nie testować jednostkowo, DLACZEGO testować jednostkowo i co sprawia, że ​​DOBRE testy jednostkowe.

Czasami podłączamy bardziej wyrafinowaną sztuczną inteligencję, czasem nie. Czasami pracujemy z innymi grami planszowymi o nieco bardziej złożonej logice, takimi jak rynny i drabiny lub coś w tym rodzaju. Czasami całkowicie odrywamy się od gier planszowych i gramy w pokera lub blackjacka.

Dla mnie bardzo ważna jest to, że ludzie szybko wygrywają i widzą, jak elastycznie możesz tworzyć oprogramowanie, przestrzegając dobrych standardów programowania. Ćwiczenia te bardzo szybko budują zaufanie. Czasami bardziej doświadczeni programiści lubią robić to samodzielnie, po to, aby odpocząć od bardziej skomplikowanych projektów lub ćwiczyć nową technikę, którą właśnie nauczyli (prawo demeter?).

hokiecsgrad
źródło
6
Jak wdrożyć Monopol w jeden dzień? Wydaje się, że jest to znacznie większy projekt.
Michael Kristofik,
Jeśli masz zasoby sztuki gotowe dla deweloperów i postępujesz zgodnie z przewodnikiem, do którego odsyłam powyżej, jest to dość łatwe. Nie zawiera wielu strategii sztucznej inteligencji ani niektórych bardziej skomplikowanych aspektów animacji i muzyki, ale jest to w pełni grywalna gra, którą można łatwo wykonać w ciągu jednego dnia. To jest naprawdę wykonalne i naprawdę sprawia wiele radości.
hokiecsgrad
# 3 zapewniłoby również rzeczywiste wrażenia klientom, którzy zmieniają wymagania wobec ciebie po tym, jak już zacząłeś.
Jarett Millard
Niestety link Monopoly nie działa :(
Casey
Maszyna z drogowskazem wciąż ją ma. web.archive.org/web/20090919075257/http://…
hokiecsgrad
15

Wybierz swoją przygodę

Dostałam tę wskazówkę od znajomego, który zaczął programować od stworzenia gry, podobnej do wyboru książki przygodowej . Jest to w zasadzie prosta tekstowa gra przygodowa o następujących wynikach:

You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _

Stworzenie takiej gry powinno nauczyć cię tworzenia gameloopa, podstawowego wprowadzania na konsolę i podstawowych skryptów. Jest to dość proste do wdrożenia i łatwe dla początkującego, ponieważ nie potrzebujesz silnika graficznego, aby napisać grę. Zaawansowani początkujący prawdopodobnie napisaliby silnik skryptowy.

Łup
źródło
7
+1, ale TYLKO, jeśli dopiero uczysz się programowania. Jeśli już znasz programowanie, nie zacznę od tego.
Jeff
1
@Jeff: Tak, jeśli jesteś kompletnym początkującym, to dobry projekt na początek. Jeśli programujesz przez jakiś czas, przejdź do innych wymienionych projektów, aby móc bawić się grafiką i tym podobne.
Spoike
8
W rzeczywistości jest to naprawdę dobry sposób na poznanie skryptów i programowania opartego na danych. Utwórz do tego „silnik”, a resztę zapisz w skryptach.
Nick Bedford
1
@Jeff nie, jeśli są doświadczonymi programistami, zakończą to za 2 godziny.
Niech
13

Z mojego doświadczenia z początkującymi programistami postęp wydaje się przebiegać mniej więcej tak:

  1. Pong
  2. Tetris
  3. Ogromne niesamowite niesamowite 50 godzin gry 3D RPG (uwaga: większość ludzi rezygnuje z programowania w trakcie tego kroku)
davr
źródło
4. Fantasy MMORPG: P
Nick Bedford
12

Breakout, Pong lub asteroidy.

Istnieje ogromna różnica między grą a prototypem gry . Jeśli poważnie myślisz o ukończeniu wymarzonej gry, powinieneś po drodze ukończyć gry na poziomie podstawowym. Stworzenie części rozgrywki to tylko połowa sukcesu. Wszystkie dodatkowe rzeczy, takie jak menu i wysokie wyniki, często są pomijane lub ignorowane, ale zajmują znacznie więcej czasu, niż ktokolwiek by się spodziewał.

Matt Rix
źródło
4
+1 za podanie szczegółów zajmuje znacznie więcej czasu, niż można się spodziewać.
mpen
11

W innych odpowiedziach jest kilka dobrych sugestii, ale chcę tylko wrzucić mój głos na: Zacznij od czegoś, co wydaje się zbyt mizerne, aby sobie z tym poradzić.

Pong jest dobrym przykładem.

Cel jest taki: sprawić, by projektowanie gry i zasady były tak szalone, że możesz skupić całą uwagę na uczeniu się nowej rzeczy, której się uczysz (języka, platformy, interfejsu API) i nie musisz stale rób przerwy, aby dowiedzieć się, jak działa gra.

Kiedy zaczniesz, przekonasz się, że pong jest nieco bardziej skomplikowany niż się wydaje na pierwszy rzut oka. (Uczę faceta programującego i używa ponga jako swojego projektu edukacyjnego. Dodaliśmy kilka funkcji, a teraz rozprasza go nauka programowania, ucząc się, jak robić te wszystkie fajne funkcje :)

Po ukończeniu aplikacji nr 1, dopóki nie będzie gotowa dawać / sprzedawać innym, NASTĘPNIE weź coś nieco bardziej skomplikowanego (Tetris, przygoda lub cokolwiek lubisz), ale aby rozpocząć naukę nowej technologii, wykonaj rzecz, którą programujesz, jest niesamowicie prosta.

Inne przykłady:

  • Odgadnij liczbę (od 1 do 1000)
  • Mastermind (zaawansowane odgadnąć numer.)
  • SimplePaint
  • Wąż / robak / jakkolwiek to nazwiesz.

Ale znowu - zacznij od czegoś, co jest zbyt łatwe, abyś mógł faktycznie coś ukończyć, spojrzeć wstecz i zobaczyć, co się z tym wiąże. Różnica między pisaniem JEDNEJ aplikacji w języku / platformie / SDK / silniku a pisaniem aplikacji ZERO jest OGROMNA . Różnica między 1 i 2 lub 2 i 5, a tym bardziej, więc możesz robić większe kroki, ale spraw, aby krok od 0 do 1 był malutki; będzie większy niż myślisz!

Olie
źródło
2
+1 za „Zacznij od czegoś, co wydaje się zbyt mizerne, aby sobie z tym poradzić” oraz za „Różnica między pisaniem JEDNEJ aplikacji ... a pisaniem aplikacji ZERO jest
OGROMNA
1
Aktualizacja 2014: Kolejna dobra aplikacja do nauki języka / technologii jest Flappy Birdpodobna. Jako profesjonalny programista jest to popołudniowa praca (no cóż, weekend, aby uczynić ją „przyjemną”), ale ucząc innego programowania, dowiedzieliśmy się, że to naprawdę ma wiele małych komplikacji. Ponownie, jedno jest o wiele więcej doświadczenia niż zero, a kiedy już je masz, będziesz miał znacznie lepszy pomysł na to, jak iść naprzód.
Olie,
9

Sprawdź tę stronę internetową: 12 pomysłów na projekty gier komputerowych

Niektóre z tych gier zawierają to, co powiedzieli inni:

  1. Pacman
  2. Tetris
  3. Pong

Ale mówi również o innych grach, które możesz spróbować, takich jak:

  1. Kółko i krzyżyk
  2. Kto chce być milionerem?
  3. I klon Mario.

Daje to również poczucie, co powinieneś najpierw zrobić, ponieważ daje poczucie trudności dla każdej gry (a zatem plan, w jaki sposób należy rozwiązać te gry):

  1. Początkujący
  2. Pośredni
  3. zaawansowane
  4. Najlepsza
thyrgle
źródło
2
+1, uwielbiam ten link. „RPG - jeśli nienawidzisz swojego życia (a niektórzy najwyraźniej tak robią), ta oczywiście ostatnia próba chwały programowania gier prawdopodobnie zakończy się źle. Sam silnik gry jest często dość rozproszony (podróże po świecie, podróże po mieście, sklepy, walki) itd.) i wymaga bezbożnego wysiłku ”
Cyclops,
5

Wiele osób zaczyna grę Breakout, ponieważ oferuje ona:

  • Wejście: przesuwanie wiosła do przodu i do tyłu
  • Prosta kolizja: piłka odbija się od wiosła, cegieł i ściany
  • Zmiana „stanu gry”: aktualizowanie wyniku, gdy piłka uderza w cegły i usuwanie cegieł, zmniejszanie liczby piłek, gdy piłka uderza w dolną część ekranu, przegrywanie gry, gdy liczba piłek == 0 itd.
  • Jest to również dość łagodne wprowadzenie do grafiki, ponieważ wszystkie są prostokątami i okręgami
Sean James
źródło
5

Najtrudniejszą częścią pisania gry - lub jakiegokolwiek oprogramowania - jest zastanawianie się, co robić. Absolutnie potrzebujesz specyfikacji! To zabawna część tworzenia klona istniejącej gry: specyfikacja już istnieje. Twoja specyfikacja brzmi: „Produkt musi robić wszystko, co robi inny produkt”, a jeśli masz pod ręką kopię innej gry, łatwo to zweryfikować.

Gdy już zorientujesz się, co musisz zrobić, dowiedz się, jak to zrobić zrobić to naprawdę nie jest takie trudne, jeśli jesteś kompetentnym programista. Nie mam na myśli wykwalifikowanego lub doświadczonego programisty; oznaczałoby to, że już wiesz, jak zrobić większość tego, co próbujesz zrobić. Ale musisz zrozumieć, jak myśleć abstrakcyjnie i mieć umiejętność rozwiązywania problemów i logiczne myślenie, które są podstawą programowania. Jeśli możesz to zrobić, możesz zrobić wszystko.

Powiedziawszy to, nie zgadzam się z tym, co większość ludzi mówi o próbie nauki pisania gier, pisząc coś naprawdę prostego. Nagroda jest wprost proporcjonalna do włożonego w nią wysiłku. Jeśli nauczysz się pisać gry, pisząc naprawdę prostą grę, wszystko, co na końcu będziesz wiedzieć, to jak pisać naprawdę proste gry, a to ci nie pomoże.

Z drugiej strony, jeśli zaczniesz od czegoś przytłaczającego, nigdy tego nie skończysz. Zacznij więc od czegoś umiarkowanie trudnego, co sprawi, że poradzisz sobie z poważnymi problemami. Budowanie RPG w stylu 2D lub przewijanej platformówki to bardzo dobry sposób na poznanie prawdziwych koncepcji programowania gier.

Mason Wheeler
źródło
5

To zależy od twoich obecnych kompetencji. Jeśli jesteś stosunkowo nowy w programowaniu, wybierz jedną z konkretnych gier, które ludzie sugerowali. W przeciwnym razie powinieneś pomyśleć, jaki rodzaj gier pozwoliłby ci dobrze wykorzystać swoje wrażenia.

Kiedy zaczynałem swoją pierwszą grę, nie miałem doświadczenia w tworzeniu gier, ale przez kilka lat zajmowałem się tworzeniem aplikacji dla przedsiębiorstw / linii biznesowych. Mój pierwszy projekt gry był turową grą strategiczną, a pod względem architektonicznym nie różniła się niczym od aplikacji korporacyjnej. Używał systemu klient / serwer, a komunikacja odbywała się przez dupleksowy kanał usługi WCF. Większość operacji gracza ustawiono w kolejce jako „rozkazy” i wysyłano na serwer na koniec tury. Przetwarzanie wszystkich tur odbywało się na serwerze, po czym aktualizacje wszechświata gry były wysyłane do każdego klienta.

Ten pierwszy projekt pozwolił mi wkroczyć na ścieżkę rozwoju gier, jednocześnie rozpoczynając działalność na znanym terytorium. W miarę rozwoju projektu nauczyłem się myśleć bardziej jak twórca gier, a mniej jak twórca aplikacji dla przedsiębiorstw. Wynik końcowy działał całkiem dobrze i był nieco bardziej imponujący niż pancernik lub kółko i krzyżyk :).

Mike Strobel
źródło
4

Nibbles i Space Invaders

Stosunkowo prosta sztuczna inteligencja, grafika, rozgrywka, sterowanie i nie muszą one mieć efektów dźwiękowych ani muzyki, chyba że chcesz to dodać. Zacząłem od tych dwóch, kiedy uczyłem się programować w QBasic dla MS-DOS i myślę, że są świetne pierwsze gry. Pac-Man byłby moim drugim wyborem.

Steve Tranby
źródło
Nigdy wcześniej nie słyszałem o Nibbles, ale zdecydowane głosowanie na Space Invaders.
jhocking
3

Gry w stylu Moonlandera są świetne (gdy masz rakietę pod wpływem grawitacji, gracze kontrolują kierunek i siłę ciągu, ograniczone zużycie paliwa podczas korzystania z ciągu). Zdobądź doświadczenie w implementacji bardzo prostej fizyki, a system kolizji może być dość prymitywny. Nie musisz się martwić AI, a co najważniejsze, jest zabawna i wciągająca :)

Allan
źródło
2
Uzgodnione gry w stylu Thrust / Lunar Lander to świetne wczesne projekty. Radzenie sobie z rotacją i prędkością / przyspieszeniem ujawni tajemnice sinus / cosinus (dla każdego, kto nie będzie się nimi zajmował przez jakiś czas). Możesz użyć statycznej lub przewijanej mapy kafelków i możesz użyć wykrywania kolizji bez potrzeby bardzo złożonej reakcji na kolizję (dotknij czegoś -> wybuchnij). Jest również dobry do myślenia o dostrajaniu układu sterowania - uzyskanie równowagi pomiędzy ciągiem, grawitacją i prędkością obrotową, aby było dobrze
bluescrn
@bluscrn to naprawdę świetny komentarz. Po zachęceniu ludzi do przetestowania mojej wersji flash zauważyłem, że ludzie mieli różne opinie na temat tego, jak powinna się czuć. Część tego przypisano wcześniejszym grom, których doświadczył użytkownik. To nie było coś, o czym szczególnie myślałem, zanim go opracowałem.
Allan,
2

Odgórna strzelanka kosmiczna, taka jak Galaga, jest dość łatwa i dość dobrze uczy wykrywania kolizji! Może również różnić się poziomem trudności, od poziomu ze stacjonarnymi wrogami do wielu poziomów, na których ulepszenia broni i wrogów poruszających się w specjalnych wzorach.

Ricket
źródło
1

Coś jak Rękawica, ponieważ potrzebujesz systemu bytu, sztucznej inteligencji wroga, pickupów, map kafelkowych, wykrywania kolizji, punktacji itp. To wszystko, ale nie w sposób przytłaczający.

Iain
źródło
Powiedziałbym, że AI wroga i wykrywanie kolizji z dowolnym układem płytek JEST przytłaczające, jeśli masz niewielkie doświadczenie lub nie masz go wcale, zwłaszcza biorąc pod uwagę fizykę, którą musisz zrobić - tarcie między graczem a ziemią itp. Może to być dobre wyzwanie po kilku meczach
Sean James
Zgadzam się, trochę przytłaczające dla ludzi dopiero zaczynających. Za dużo pomysłów naraz. Zacznij od czegoś, co jest tylko punktowaniem i wkładem. Następnie utwórz grę, która zawiera 1 lub 2 nowe rzeczy, takie jak wykrywanie kolizji i wrogowie. Wybieraj gry oparte na znanych sobie koncepcjach, ale przedstawiające coś, czego nie znasz; jeśli nie znasz, nie powinieneś tego próbować. Nie komplikuj.
user384918,
Szczerze sądzę, że w Klonie Gauntletów dzieje się zbyt wiele, aby można je było uznać za grę „na poziomie podstawowym”.
PhillC,
Szczerze mówiąc, myślę, że łatwiej jest kodować Gauntleta niż Tetrisa, ponieważ ustalenie, w jaki sposób bloki układają się na sobie, czy linia jest kompletna i jak usuwać linie, to dość skomplikowane abstrakcyjne problemy. Rękawicę można zakodować w mniej niż 1000 linii na dowolnej współczesnej platformie 2D, a jeśli nie jest to możliwe na platformie, której używasz, sugeruję znalezienie innej. W każdym razie zasugerowałem to dokładnie, ponieważ wymaga to nauczenia się wszystkich elementów, które składają się na nowoczesną grę.
Iain
Dostajesz dodatkowe punkty za prawidłowe wykonanie głosu: „Elf zastrzelił jedzenie!” „Czarodziej wkrótce umrze!” lub mój ulubiony: „Znalazłeś mój pokój pewny TRAY!”
rtperson
1

Mini klon Zelda jest dobry i ćwiczy pewne umiejętności, o których tu nie wspomniano wiele. Dobrze jest przewijać dużą mapę kafelków i proste, 8-kierunkowe elementy sterujące ruchem. Punkty bonusowe, jeśli potrafisz atakować wrogów, ale nie martwiłbym się tym zbytnio.

koderanger
źródło
1

Zrobiłem więcej niż kilka klonów Tetris. Za każdym razem, gdy to robiłem, robiłem to nieco inaczej. W dzisiejszych czasach zwykle robię jednak klony asteroid. Zrobiłem też więcej niż kilka spinoffów dowodzenia pociskami.

Zacząłem od podstawowej gry, a potem zacząłem dodawać do niej więcej rzeczy, ulepszeń itp.

Casey
źródło
1

Zawsze zaczynałem od gry Tanks / Gorillas / Worms. Pozwala ćwiczyć na prostym graficznym wyświetlaczu i czytać dane wprowadzane przez użytkownika, a także pętlę gry przykładającą grawitację do pocisku i testującą wykrywanie kolizji.

Potem pojawiła się gra jak bardzo prosta platformówka lub shoot-em-up, w której musisz czytać dane wejściowe użytkownika w czasie rzeczywistym, zamiast instrukcji INPUT, które działają dla Gorillas :)

AlexC
źródło
1

Solitaire (lub tak naprawdę dowolna gra karciana) to dobra gra na zabrudzenie rąk nowym systemem interfejsu użytkownika, ponieważ wykonuje wiele widżetów i mechanizmów sprzężenia zwrotnego kontrolera, których potrzebujesz. Ponadto logika jest prosta i jednoznaczna, więc możesz skoncentrować się na nauce, a nie na projektowaniu gry.

W przypadku gier symulacyjnych w czasie rzeczywistym zawsze polecam Pong jako dobry prosty punkt wyjścia, ponieważ projekt jest prosty, podobnie jak interfejs kontrolera, dzięki czemu można przejść do sedna systemu - symulacji fizycznej.

MrCranky
źródło
1

Zawsze twierdziłem, że jeśli jesteś programistą gier, powinieneś być w stanie stworzyć jakąś formę Space Invaders . Cholera, gra jest na tyle prosta, że ​​powinieneś być w stanie sam zrobić grafikę.

Mając wybór małych gier w twoim portfolio jako dodatkową korzyść z bycia całkiem przydatnym, na przykład, jeśli uczę się nowego języka programowania lub frameworka, często przenoszę jedną z moich prostych gier, aby zobaczyć, jak nowy sposób robienie rzeczy pasuje do sposobu, w jaki zostały napisane.

JSmyth
źródło
1

To naprawdę zależy od tego, jakie umiejętności masz już jako zwykły programista. Czy twoja matematyka potrzebuje pracy? Twoja wiedza graficzna? Czy masz oba w tajemnicy?

Chociaż ogólnie myślę, że Tetris i Breakout również byłyby moimi dwoma starterami. Wszystko łatwiejsze niż to nie zapewnia wystarczającego bodźca. Tetris to dobry test na to, jak ułożyć dane w algo, przełamanie jest lekkim przykładem matematyki. Zawsze mówię ludziom, aby celowali wysoko, celem jest utknięcie i wymyślenie rozwiązania.

Po tym niebo jest granicą. Ponownie celuj wysoko. Wypróbuj platformówkę z pochyłym terenem, Parralax, a masz dobrą torbę z technologią 2d. Dodaj jednoręki bandyta (przygotuj się na frustrację), a matematyka się poprawi.

Stamtąd przejdź do trzeciego wymiaru, naucz się podstawowych umiejętności (animacja, rendering) i powinieneś być stosunkowo dobrze przygotowany do radzenia sobie z różnorodnymi grami.

Kaj
źródło
0

Powiedziałbym, że gra typu Tower Defense to najlepsze miejsce na rozpoczęcie. Możesz również zacząć od modyfikacji już istniejących gier / silników (WarCraft III / HalfLife2 SDK / itp.), Aby zrozumieć ogólną potrzebną logikę, a następnie przejść do korzystania z własnej bazy kodu.

Gootik
źródło
0

Moja pierwsza gra była jak Super Mario.

Poruszaj się, omijaj przeszkody, skacz. Wszystkie te zadania można łatwo wykonać bez obliczeń fizycznych.

Idealnie jest wziąć prostą rzecz 2D, ponieważ nie będziesz polegać na konkretnej implementacji / ramie / silniku.

SwissCoder
źródło