Quali sono i buoni giochi con cui "guadagnare le tue ali"? [chiuso]


305

Credo che per diventare un buon sviluppatore di giochi, devi creare giochi.

Dal punto di vista di un programmatore , quali sono alcuni buoni giochi entry level per sporcarti le mani? Quali abilità e sfide ti insegnano ciascuno di questi giochi?

Risposte:


217

Scoppiare

Gioco facile dato che non hai molto stato di cui preoccuparti (è una matrice di valori di mattoni - se hai solo un colore di mattoni, è una matrice di bandiere), non c'è nessun AI e puoi fare un un po 'di fisica per far rimbalzare correttamente la palla.

Solitario

Le regole sono un po 'più complesse di Breakout e l'interfaccia è molto diversa. Ti costringe a pensare a diversi metodi di implementazione di un gioco. cioè, ciò che funziona in un gioco non è necessariamente quello che useresti in un altro.

Pac-Man

Questo è carino perché devi lavorare su un po 'di IA. Avere i fantasmi che seguono il giocatore (ma non troppo bene - vuoi che il giocatore abbia una possibilità) può essere implementato rapidamente e avrai un piccolo gioco divertente che puoi modificare e mostrare ad amici e familiari (il feedback positivo è sempre una buona cosa quando stai iniziando).

Trovo che se cerchi ispirazione nei primi videogiochi, puoi trovare tonnellate di idee che sono relativamente semplici da implementare. Inoltre, puoi cavartela con immagini e suoni super semplici perché stai comunque copiando qualcosa di così semplice. Ciò ti consente di concentrarti prima sulle nozioni di base: mettere in moto il tuo gioco e renderlo operativo, capire come ottenere i pixel sullo schermo, riprodurre un suono, mantenere il punteggio, ottenere l'input del giocatore nel gioco.

Non importa quasi quale gioco scegli per primo: assicurati di scegliere qualcosa di semplice con cui ottenere risultati rapidi, in questo modo puoi spostarti il ​​giorno successivo e crearne un altro. E un altro. E un altro: più fai, più ti spingi e alla fine creerai giochi complessi prima di saperlo.


49
+1 su Breakout. Ho avuto molti sviluppatori di giochi PRO che mi dicono che ogni volta che ottengono un nuovo pezzo di tecnologia, lo imparano prima facendo Breakout.
Jeff,

2
+1 Breakout è stato il primo gioco che ho realizzato =). Inoltre, sono d'accordo nel provare a ricreare i primi videogiochi (con i tuoi colpi di scena!). Concentrati sui concetti, non sui beni.
user384918,

16
@PhillC, no, non vale la pena dividere
Simurr

13
Ti sei dimenticato di Tetris: era il secondo gioco che ho implementato di nuovo alla scuola superiore :)
Emiliano

2
tutti voi potete fornire link ai vostri sblocchi? mi è piaciuto molto quel gioco e vorrei provare tutti i remake
fent

256

Consiglio vivamente ai programmatori principianti di iniziare con il gioco più semplice che vogliono scrivere . Come menzionato da Matt Rix, gran parte della scrittura di un gioco contro una demo sta spingendo la dannata cosa fino al completamento: crediti, menu, test di gioco, punteggi alti, pausa, test di gioco, livelli di difficoltà, passaggi di stato del gioco puliti, gioco test, ecc. Quella roba richiede almeno la metà del tempo che stai per inserire e non è divertente. Non lo è. Quindi, a meno che non ami il concetto e non sei veramente motivato, ti arrenderai e passerai prima che il gioco sia un gioco .

Se vuoi scrivere un gioco di ruolo, scopri il concetto di gioco di ruolo più semplice e gestibile che puoi inventare per quello che vuoi fare e farlo. Lo stesso se vuoi fare uno sparatutto fantascientifico, un platform a tema horror o altro. Scegli qualcosa che finirai, che vorresti ancora finire dopo che tutto è stato fatto, ma stai ancora guardando dozzine di ore di lavoro prima di aver finito.

Il miglior gioco con cui "guadagnare le tue ali"? Quello che hai completato. Non mi importa quante demo PONG / Breakout / Galaga / Tetris sono state scritte a metà, non sei uno sviluppatore di giochi fino a quando non hai rilasciato un gioco completo.

Inoltre, nessuno vuole giocare a un'altra versione di quei giochi di 40 anni, e almeno un po 'del punto di scrivere giochi è che le persone possano giocare , giusto?


3
Voglio triplicare votare questa risposta!
Iain,

2
+1 per il commento sul rilascio effettivo di un gioco. Far funzionare un gioco è solo il 30% circa del processo, IMO. Continuando a iterare costantemente sulla meccanica, lucidando tutto per apparire presentabile, inseguendo quegli orribili bug che si verificano solo in scenari molto specifici e in realtà essere in grado di concentrarsi solo su ciò che deve essere fatto è l'altro 70%.
Dennis Munsie,

1
+1 per dire quello che voglio dire. Il mio primo gioco è stato palmgadget.com/palmgo.html. Potrebbe essere fatto perché adoro il gioco Go e lo uso davvero per registrare i miei giochi nel club. "Grattarsi il prurito" per primo.
oh,

16
Mi piace questo consiglio, ma può essere pericoloso. Dopotutto, questa mentalità è proprio il motivo per cui così tante persone vanno nei forum degli sviluppatori di giochi e dicono "Non ho mai fatto un gioco prima, inizierò un MMORPG". Direi che dovresti iniziare con un gioco che ti piace da una selezione limitata di buoni progetti di partenza. Quindi, se odiate davvero Tetris, allora non farlo. Ma fai Breakout invece, non solo qualsiasi gioco casuale che ti piace.
jhocking

185

Ho pubblicato questa scala su TIGsource qualche tempo fa. Si parte dal molto semplice al molto complesso.

  • "Indovina il numero" / Hangman (interfaccia di base, seleziona i dati da un database)
  • Tic-Tac-Toe / Rock-Paper-Scissors (gameplay a turni, AI avversario)
  • Arkanoid / Pong (collisioni, frame rate stabile, punteggio, livelli)
  • Tetris (strutture di dati e loro relazione con i giochi)
  • 1942 / Spara-em-up (nemici, proiettili)
  • gioco platform / flipper semplice se il tuo motore fa platform (collisioni basate sulla gravità)
  • Bomberman / Pacman (movimento basato su tessere, complessa IA nemica)
  • Gioco per due giocatori di uno qualsiasi dei tipi sopra (input per due giocatori)
  • Roguelike / Diablo (gestione dell'inventario, più AI nemiche, salvataggio e caricamento di stati di gioco complessi)
  • Faceball / Wolfenstein 3D (movimento e rendering 3d di base)
  • Gioco a turni di rete (networking di base)
  • Gimmicky platform 3D in terza persona (fisica, movimento 3d complesso)
  • Gioco in rete in tempo reale (sincronismo client-server, ritardo)
  • MMORPG (mondo persistente)

7
Puoi spiegare meglio cosa dovresti imparare qui. Le tue note concise non sono molto descrittive / utili.
SpoonMeiser il

57
Anche se è l'ultimo, penso che MMORPG debba andare più in basso. Elenco fantastico. +1
は る と

6
Grande elenco, anche se penso che l'intero aspetto della scala si rompa dopo Pacman. A quel punto sai abbastanza per andare a fare qualsiasi tipo di gioco; Non penso che devi sviluppare Diablo prima di sviluppare Wolfenstein. Tutto fino a Pacman che dovresti fare in ordine.
jhocking

5
Il "mondo persistente" sottostima sottovalutatamente le differenze tra un MMORPG e le opzioni precedenti.
Malabarba,

1
Puoi gestire "Persistent World" anche in un non MMORPG (es. Un roguelike).
ashes999,

64

La regola più importante dell'apprendimento della programmazione di gioco: l'apprendimento della programmazione è difficile. L'apprendimento del design del gioco è difficile. Imparare a creare una buona grafica o audio di gioco è difficile. Cercare di fare tutte queste cose contemporaneamente è una ricetta per il fallimento. Impara una cosa alla volta.

Corollario: programma un gioco in cui il design, l'arte e il suono sono già stati realizzati. Crea cloni, non giochi originali.

Nelle mie lezioni, consiglio sempre di iniziare questi giochi, in ordine:

1) Tetris. L'arte è rettangoli colorati, che persino un klutz totale può disegnare in Microsoft Paint. Non hai bisogno del suono. La programmazione è relativamente semplice, ma richiede ancora alcune cose chiave: capire la differenza tra lo stato del gioco interno e ciò che è disegnato sullo schermo; essere in grado di disegnare sullo schermo, punto (probabilmente con sprites e blitting); essere in grado di accettare l'input dell'utente in tempo reale piuttosto che usare semplicemente getch () o scanf () dove devi aspettarli.

2) Breakout / Arkanoid. L'arte è ancora rettangoli colorati e non hai ancora bisogno del suono. Utilizza tutti i concetti di base di Tetris, oltre a un rilevamento di base delle collisioni e alla fisica 2D poiché la palla deve muoversi e rimbalzare senza problemi.

3) Gradius / R-Type. Probabilmente puoi trovare alcuni set di tessere freeware per farlo. Qui lo sfondo scorre, quindi devi imparare un po 'di più su come funziona la memoria grafica, usando tecniche come sfogliare la pagina e fare doppio buffering e disegnare cose al di fuori dei confini dello schermo visibile. Tendi anche ad avere nemici dinamici e spawn di proiettili, quindi dovrai imparare a ripulire dopo te stesso (cioè sbarazzarsi di nemici e proiettili che lasciano lo schermo in modo che il gioco non perda la memoria come un setaccio).

4) Super Mario Bros. Simile al precedente progetto di scorrimento, tranne per il fatto che lo scorrimento è ora sotto il controllo del giocatore e non è automatico. Devi anche fare i conti con la gravità e tutte le divertenti cose di collisione che ne derivano (come non cadere sul pavimento solo perché eri qualche pixel sopra nell'ultimo fotogramma e vuoi passare a pochi pixel sotto nel fotogramma successivo ). Nota anche che la gravità è condizionata: influenza il giocatore e alcuni nemici, ma in genere non le piattaforme o le monete galleggianti o altro, che è un po 'diverso dal mondo reale.

Se riesci a fare tutti e quattro questi, dovresti essere in grado di fare praticamente qualsiasi gioco 2D che desideri; tutti gli strumenti ci sono. Se vuoi creare un gioco 3D ... impara prima il 2D perché è molto più semplice e non hai bisogno di capire la matematica in modo approfondito e devi comunque capire le cose 2D ... e poi quando sei a tuo agio, inizia a lavorare con alcuni strumenti 3D di base (librerie come Torque o Unity o giochi open source come Doom e Quake originali).

In bocca al lupo!


39

Questa è davvero una buona domanda. Non so dove sei, quindi oscillerò per il cielo, e presumo che non hai mai scritto una riga di codice in vita tua. Taglia qualsiasi parte del naso ti offende, abusando di una frase.

Penso che in realtà risponderò a una domanda leggermente diversa da quella che hai fatto e fornirò esempi per soddisfare la domanda che hai posto in loco. Il motivo per cui lo sto facendo in questo modo è lieve, ma credo che la differenza di punto di vista sia significativa: non sono tanto i giochi specifici che contano, quanto le mentalità che quei giochi portano a un designer.

Sai come le persone parlano del fatto che dovresti imparare una varietà di linguaggi di programmazione, al fine di mangiare le loro mentalità, i loro cuori e i loro fegati, e quindi ottenere il loro potente potere? C'è una vera verità in questo - dopo il tuo primo linguaggio di programmazione puro o quasi puro, anche in linguaggi imperativi, finirai per scrivere funzioni prive di effetti collaterali perché sono molto meglio definite e tutto ciò che scrivi anche in lingue non di quella forma sarà meglio per questo. Non importa in che lingua sia - haskell, ml / ocaml / smlnj, formulaONE, modelli c ++, qualunque cosa - imparerai ancora a fare molte classi di lavoro senza fare affidamento sullo stato degli effetti interni. La prima volta che impari un linguaggio di programmazione robusto e vicino alla macchina, imparerai a conoscere l'astrazione per tipo di dimensione. La prima volta che impari un linguaggio dichiarativo o di vincolo, imparerai a delimitare come strumento discrezionale. La prima volta che impari una lingua di ricerca indietro, imparerai a pregare Ia! Ia! C'thulhu F'tagn Nagn !, e poi torniamo a mangiare cuori e fegati, e il cerchio della vita si adempie.

Il design del gioco non è diverso. Non devi necessariamente imparare un gioco specifico, parallelamente a una lingua specifica, ma piuttosto imparare un gioco rappresentativo emblematico che gestisca quella mentalità, come le famiglie caratteristiche della lingua. Inoltre, c'è molto da mangiare fegati e cuori. Prendi un cracker al pepe.

Il bavaglio qui (almeno per come lo vedo io) è che vuoi coprire un ampio elenco di argomenti. È come spuntare le competenze su una scheda del personaggio: stai mettendo a tua disposizione più meccanismi con cui gestire una determinata situazione. Sì, sono in grado di livellare, ma avere un punto o due in più cose che puoi su tutta la linea significa che quando arriva il momento di usarne uno, non stai iniziando da zero e sai quali tattiche sono disponibili per farvi crescere.

Quindi guarda.

Per prima cosa vuoi tagliarti i denti. Questi sono utili anche quando stai imparando a scegliere una nuova piattaforma o quando ti stai riprendendo dall'amnesia. Questi sono pensati per essere veloci, non fantastici.

In ordine:

  1. Controllo dello schermo. Il bluescreening è ottimo per questo, perché allora hai validi motivi per credere di essere sulla buona strada per diventare Microsoft.
  2. Convalida input. Fooscreen, dove foo è blu per su, rosso per giù, ecc. Controlla tutte le tue chiavi; ci sono colori più che sufficienti, oppure puoi creare una mappa a quattro colori se devi assolutamente salvare il cremisi per cose più importanti.
  3. Rendering di testo e sprite. Dato che hai anche la convalida dell'input, un gioco con memoria a tessere non è una cattiva idea.
  4. Timer. Tempo per un clone di Mario o un Arkanoid.
  5. Suono e musica. Migliora il clone di mario. Non molto però.

Una volta che li hai abbattuti, sei pronto per indirizzare una piattaforma e l'apprendimento può iniziare.

Questi non sono in un ordine particolare. Puoi riorganizzarli come meglio credi. Darò una manciata di esempi con ciascuno, ma non sono normativi; se un gioco diverso ti dà la stessa esperienza ed è abbastanza piccolo per far parte di una serie di lezioni, sentiti libero di cambiarlo. Per motivi pratici, è bene essere abili nel rendering dello schermo e nell'input relativamente rapidamente; li userai molto. Attendi qualche gioco prima di provare a scrivere classi di astrazione; si non si desidera essere catturati in un'astrazione ingenuo.

  • Animazione. Quasi tutto ciò che fai può richiedere sprite animati. Ottieni un motore di animazione indipendente sotto la cintura, anche se è l'arte del programmatore. Realizzare un semplice gioco puzzle le cui tessere pulsano sono sufficienti.
  • Punteggio complesso. Prendi tutti e cinque i nemici in un'ala? Bonus. Terra tre pugni di fila? Bonus. Attraversare l'intero livello senza perdere un proiettile? Enorme bonus.
  • Pathfinding. Molti giochi hanno bisogno di questo, ma un gioco di difesa della torre è il più semplice. Puoi iniziare con breadth-first e depth-first se non l'hai mai fatto prima, ma non lo hai fatto fino a quando non hai implementato A * da zero (CODICE NON COPIATO) almeno una volta.
  • Comportamento nemico. I comportamenti muti automatizzati saranno coperti da Mario, ma anche i comportamenti reattivi sono importanti. Questa è una buona scusa per costruire un gioco di tattica o un roguelike. (Attenzione: lavorerai sul roguelike per il resto della tua vita.)
  • Illuminazione dinamica 2D. Questo è anche un buon motivo per scrivere un roguelike. Il shadowcasting basato sull'arco è un modo importante di considerare il banding e la separazione, che a sua volta è importante per molte strutture di dati.
  • 2d Fisica. Questo si presenta in molti giochi, con molti livelli di dettaglio. Prova un platform (mario-ish,) che può essere super semplificato; un gioco di carri armati (bruciato-terra-ish,) che può essere ugualmente semplificato; e, infine, un gioco come N the Ninja, che ti consente di affrontare la corsa su angoli, quantità di moto, eccetera (puoi farlo con un sistema di collisione con scatola di delimitazione allineata sull'asse piuttosto semplice.) Fisica e collisione sono piuttosto intimamente correlate.
  • Rilevazione di collisioni. Ci sono casi ridicolmente semplici, come griglia Arkanoids e cloni di Mario, casi moderatamente complessi come N the Ninja e casi veramente complessi come giochi di fisica sandbox (l'incredibile macchina, arkanoidi moderni come BreakQuest, ecc.) In molti casi puoi cavartela con qualcosa come AABB , ma se sei propenso alla matematica, potrebbe essere utile implementare qualcosa di completo. Come minimo, acquisire familiarità con una libreria completa, come APE o Box2D.
  • Rapporti rischio / rendimento nella soddisfazione del gioco. Semplici giochi di dadi (vai alla ricerca di qualcosa chiamato "Skunk" degli anni '50) e giochi da tavolo a percorso rischioso (vita, candyland) sono ottimi esempi di semplici modi rapidi per imparare questo facendo.
  • Variazione espressiva della meccanica. Inchiodati a un piccolo numero di regole, quindi impara a ricavarne molte varianti. I giochi di carte con mazzo personalizzato sono un ottimo modo per lavorare con questo; dai un'occhiata ai mazzi Dvorak e ai giochi del mondo reale come Mille Bornes, Rage e Uno, poi creane uno tuo. Non riescono ad essere simili.
  • Contenuto generato. Semplici giochi di strategia basati su mappe, roguelike e alcuni tipi di giochi puzzle sono ottimi modi per imparare a farlo. Punti bonus se si tratta di un tipo di gioco generalmente non noto per aver generato contenuti.
  • Stile. Non andare in giro: questo è un grosso problema. Crea un gioco, quindi skin come quattro giochi completamente diversi. Davvero diverso Uno anche un gioco per bambini. (Pensaci: Mega Man ha perfettamente senso come un'avventura da stregone all'inferno, o come Ladro degli X-Men, o ...) Ora, fai in modo che quattro gruppi di persone segnino uno dei tuoi giochi. Dopodiché, fai in modo che segnino il gioco successivo, in senso antiorario, attorno al ring e così via. Notare come cambia radicalmente il loro punteggio in base al tema e alle aspettative precedenti.
  • Realizzare le sequenze del piano del giocatore. I giochi rompicapo sono i modi più puliti per farlo.
  • Gestione delle risorse
  • aggiornamenti
  • Aumentare la pressione del tempo

... eh. Mi sono annoiato.


11
Risposta eccellente. Fine davvero deludente lì. Sarebbe fantastico se potessi rivisitare questo e legarlo insieme in qualche modo per dargli un finale coerente.
Ricket,

1
Per un finale, che ne dici di alcune istruzioni per cucinare il fegato ? giantitp.com/comics/oots0738.html
Ciclope

4
Questa è una lezione di vita incredibilmente mascherata da un post sulla programmazione del gioco.
sdasdadas,

30

Tetris

Gioco molto comune, un sacco di cloni open source là fuori a squarciarsi se rimani bloccato. Insegna le basi della grafica 2D, la gestione dell'input, il punteggio, ecc.

Quindi prendi questa idea originale e mettila in gioco. Ho imparato le basi della grafica 3D / opengl scrivendo una versione 3D di Tetris per il mio corso di grafica al computer al college.


2
O "Colonne" se sei un ragazzo di Sega;)
Andrew Russell,

Musica a tema Cue Tetris ...
Nick Bedford,

3
qntm.org/hatetris (va bene manca la musica a tema, ma volevo solo collegarla ...)
user384918

1
@bloots wow, questo è male
Bryan Denny il



15

Mi piace iniziare tutti i miei ragazzi con Monopoli. Di solito uso il "code kata" di Monopoly di Brett Schuchert come base dell'esercizio, ma aggiungo molto su di esso. Ci sono diverse ragioni per cui mi piace davvero farlo.

  1. Mi preoccupo profondamente delle buone pratiche di codifica (modelli di progettazione, TDD, SOLID, integrazione continua, ecc.) E metto molti vincoli sui miei sviluppatori quando fanno questo esercizio.

  2. Praticamente tutti conoscono le regole di Monopoli e l'intero gioco può essere completato in un solo giorno. Ciò offre ai nuovi sviluppatori una rapida vittoria e aumenta davvero il loro coinvolgimento.

  3. I requisiti iniziali iniziano con i controlli da tastiera, ma successivamente aggiungo un requisito per i controlli del mouse. Ciò induce gli sviluppatori a pensare a diverse cose, come riformattare il codice esistente, programmare parti di sistema modificabili in interfacce anziché in classi concrete, astrazioni migliori / appropriate, cosa testare l'unità, cosa non testare l'unità, PERCHÉ testare l'unità e cosa effettua BUONI test unitari.

A volte inseriamo un'IA più sofisticata, a volte no. A volte lavoriamo con altri giochi da tavolo con una logica leggermente più complessa come scivoli e scale o qualcosa del genere. A volte ci separiamo completamente dai giochi da tavolo e facciamo un gioco di poker o blackjack.

La parte veramente importante, per me, è che le persone ottengono una rapida vittoria e vedono quanto è flessibile realizzare software quando si seguono buoni standard di programmazione. Questi esercizi creano confidenza molto rapidamente. A volte, agli sviluppatori più esperti piace fare questi da soli, solo per prendersi una pausa da progetti più complicati o per praticare una nuova tecnica che hanno appena appreso (legge di Demeter?).


6
Come si implementa il monopolio in un giorno? Sembra un progetto molto più grande di quello.
Michael Kristofik,

Se hai le risorse artistiche pronte per gli sviluppatori e segui la guida che ho collegato sopra, è abbastanza facile. Non include più strategie di intelligenza artificiale o alcuni degli aspetti più complicati di animazione e musica, ma è un gioco completamente giocabile ed è facilmente realizzabile in un giorno. È davvero fattibile ed è davvero molto divertente.
hokiecsgrad,

# 3 darebbe anche l'esperienza nel mondo reale dei clienti che cambiano i requisiti su di te dopo che hai già iniziato.
Jarett Millard

Purtroppo il collegamento Monopoly è morto :(
Casey,


15

Scegli-Your-avventura

Ho ricevuto questo consiglio da un amico che ha iniziato a programmare creando un gioco, molto simile a scegliere il tuo libro di avventura . È fondamentalmente un semplice gioco di avventura testuale con un risultato come questo:

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
> _

Realizzare un gioco del genere dovrebbe insegnarti a creare un gameloop, input di console di base e script di base. È abbastanza semplice da implementare e facile per un principiante nel quale non è necessario un motore grafico per scrivere il gioco. I principianti esperti probabilmente scriverebbero un motore di scripting.


7
+1 ma SOLO se stai solo imparando la programmazione. Se conosci già la programmazione, non inizierei con questo.
Jeff,

1
@Jeff: Sì, se sei un principiante assoluto, questo è un buon progetto per cominciare. Se hai programmato per un po ', scegli gli altri progetti citati in modo da poter giocare con la grafica e quant'altro.
Spoike,

8
In realtà, questo è un ottimo modo per conoscere script e sviluppo basato sui dati. Crea il "motore" per questo e scrivi il resto negli script.
Nick Bedford,

1
@Jeff nah, se sono programmatori esperti, lo finiranno in 2 ore. Quindi
invitali

13

Nella mia esperienza con i programmatori alle prime armi, la progressione di solito sembra andare in questo modo:

  1. pong
  2. Tetris
  3. Enormi incredibili incredibili 50 ore di gioco di ruolo in 3D RPG (nota: la maggior parte delle persone rinuncia alla programmazione durante questo passaggio)

4. Fantasy MMORPG: P
Nick Bedford,

12

Breakout, Pong o Asteroids.

C'è un'enorme differenza tra un gioco e un prototipo di gioco . Se sei seriamente intenzionato a finire il gioco dei tuoi sogni, allora dovresti finire i tuoi giochi "entry level" lungo la strada. Creare la parte di gioco del gioco è solo metà della battaglia. Tutte le cose extra come menu e punteggi alti vengono spesso trascurate o ignorate, ma richiedono molto più tempo di quanto ci si aspetterebbe.


4
+1 per menzionare i dettagli richiede molto più tempo di quanto ti aspetti.
Aprire il

11

Ci sono alcuni buoni suggerimenti nelle altre risposte, ma voglio solo dare un voto nel mio voto: inizia con qualcosa che sembra troppo scortese da affrontare.

Pong è un buon esempio.

L'obiettivo è: rendere la progettazione del gioco e le regole impostate in modo tale che tu possa concentrare tutta la tua attenzione sull'apprendimento della nuova cosa che stai imparando (una lingua, una piattaforma, un'API) e non devi costantemente fare delle pause per capire come funziona il gioco.

Una volta che inizi, scoprirai che il pong è in realtà leggermente più complicato di quanto sembri a prima vista. (Sto insegnando a un ragazzo a programmare e sta usando il pong come suo progetto di apprendimento. Abbiamo aggiunto alcune funzionalità e ora si sta distraendo dall'imparare a programmare imparando a fare tutte queste fantastiche funzioni :)

Una volta completata l'app n. 1 fino a quando non è pronta per essere venduta / venduta ad altri, ALLORA affronta qualcosa di un po 'più complicato (Tetris, avventura o qualunque cosa ti piaccia) ma, per iniziare a imparare una nuova tecnologia, fai la cosa che programmate brain-dead semplice.

Altri esempi:

  • Indovina il numero (tra 1 e 1000)
  • Mastermind (avanzato indovina il numero.)
  • Simple Paint
  • Snake / worm / qualunque cosa-si-chiama-it.

Ma, ancora una volta, inizia con qualcosa di troppo semplice, in modo da poter effettivamente completare qualcosa e guardare indietro e vedere cosa è coinvolto. La differenza tra aver scritto UNA app in una lingua / piattaforma / SDK / motore e aver scritto app ZERO è ENORME . La differenza tra 1 e 2, o 2 e 5, molto meno, quindi puoi fare passi più grandi, ma fai che il passo da 0 a 1 sia un piccolissimo; sarà più grande di quanto pensi!


2
+1 per "Inizia con qualcosa che sembra troppo difficile da gestire" e per "La differenza tra aver scritto UNA app ... e aver scritto app ZERO è ENORME"
Luc125,

1
Aggiornamento 2014: un'altra buona app "impara la lingua / la tecnologia" è un gioco Flappy Birdsimile. Come programmatore professionista, è un lavoro pomeridiano (beh, un fine settimana per renderlo "bello") ma, mentre insegniamo a un altro a programmare, abbiamo imparato che in realtà ha molte piccole complicazioni. Ancora una volta, si tratta di un'esperienza molto più grande di zero e, una volta ottenuta, si avrà un'idea molto migliore su come andare avanti.
Olie,

9

Dai un'occhiata a questo sito Web: 12 idee per progetti di giochi di informatica

Alcuni di questi giochi includono ciò che altri hanno detto come:

  1. Pacman
  2. Tetris
  3. pong

Parla anche di altri giochi che potresti provare a fare come:

  1. Tic-Tac-Toe
  2. Chi vuol essere milionario?
  3. E un clone di Mario.

Inoltre, dà un'idea di cosa dovresti provare a fare prima poiché dà un senso di difficoltà per ogni gioco (e quindi un piano su come dovresti affrontare i giochi):

  1. Principiante
  2. Intermedio
  3. Avanzate
  4. Migliore

2
+1, adoro quel link. "Gioco di ruolo - se odi la tua vita (e alcuni apparentemente lo fanno), questo tentativo ovviamente dell'ultimo anno di gloria della programmazione di videogiochi probabilmente finirà male. Il motore di gioco stesso è spesso abbastanza diffuso (viaggi del mondo, viaggi in città, negozi, combattimenti , ecc.) e richiede uno sforzo empio "
Ciclope,

5

Molte persone iniziano con Breakout perché presenta:

  • Input: spostare una paletta avanti e indietro
  • Collisione semplice: palla che rimbalza su pagaia, mattoni e muro
  • Modifica dello "Stato di gioco:" Aggiornamento del punteggio quando la palla colpisce i mattoni e rimozione dei mattoni, riduzione del numero di palline quando la palla colpisce il fondo dello schermo, perdita del gioco quando il numero di palline == 0, ecc.
  • È anche un'introduzione abbastanza delicata alla grafica in quanto è tutto rettangolo e cerchi

5

La parte più difficile della scrittura di un gioco - o di qualsiasi software - è capire cosa fare. Hai assolutamente bisogno di una specifica! Questa è la parte divertente della creazione di un clone di un gioco esistente: le specifiche esistono già. La tua specifica è "Il prodotto deve fare tutto quello che fa un altro prodotto" e se hai una copia dell'altro gioco a portata di mano, è abbastanza facile verificarlo.

Una volta che hai capito cosa devi fare, capire come farlo non è poi così difficile se sei un programmatore competente. Non intendo un programmatore esperto o esperto; ciò implicherebbe che sai già come fare la maggior parte di ciò che stai cercando di fare. Ma devi capire come pensare nelle astrazioni e avere le capacità di problem solving e di pensiero logico che sono fondamentali per la programmazione. Se riesci a farlo, allora puoi fare qualsiasi cosa.

Detto questo, non sono d'accordo con quello che la maggior parte della gente dice riguardo al tentativo di imparare a scrivere giochi scrivendo qualcosa di veramente semplice. La ricompensa è direttamente proporzionale allo sforzo che ci metti. Se impari a scrivere giochi scrivendo un gioco davvero semplice, alla fine saprai solo come scrivere giochi davvero semplici, e questo non ti farà molto bene.

D'altra parte, se inizi con qualcosa di travolgente, non finirai mai. Quindi inizia con qualcosa di moderatamente impegnativo che ti farà affrontare problemi seri. Costruire un gioco di ruolo in stile console 2D o un platform a scorrimento laterale è un ottimo modo per imparare concetti di programmazione di gioco reali.


5

Dipende davvero dalle tue attuali competenze. Se sei relativamente nuovo nella programmazione, scegli uno dei giochi specifici suggeriti dalle persone. Altrimenti, dovresti pensare a quale tipo di gioco ti permetterebbe di mettere a frutto la tua esperienza.

Quando ho iniziato il mio primo gioco, non avevo esperienza di sviluppo del gioco, ma avevo fatto lo sviluppo di app enterprise / line-of-business per alcuni anni. Il mio primo progetto di gioco era un gioco di strategia a turni e, dal punto di vista architettonico, non sembrava molto diverso da un'applicazione aziendale. Ha utilizzato un sistema client / server e la comunicazione è avvenuta attraverso un canale di servizio WCF duplex. La maggior parte delle operazioni del giocatore venivano messe in coda come "ordini" e spedite al server alla fine del turno. L'elaborazione di tutti i turni ha avuto luogo sul server, dopo di che sono stati inviati gli aggiornamenti dell'universo di gioco a ciascun client.

Quel primo progetto mi ha permesso di farmi strada nello sviluppo del gioco mentre mi avviavo in un territorio familiare. Con l'evoluzione del progetto, ho imparato a pensare più come uno sviluppatore di giochi e meno come uno sviluppatore di app aziendali. Il risultato finale ha funzionato abbastanza bene ed è stato un po 'più impressionante di Battleship o Tic-Tac-Toe :).


4

Stuzzichini e invasori spaziali

AI, grafica, gameplay, controlli relativamente semplici e non devono avere effetti sonori o musica a meno che tu non voglia aggiungerlo. Ho iniziato con questi due quando ho imparato a programmare in QBasic per MS-DOS e penso che loro sono fantastici primi giochi. Pac-Man sarebbe la mia altra scelta.


Non ho mai sentito parlare di Nibbles prima, ma definitivo voto positivo su Space Invaders.
jhocking

3

I giochi in stile Moonlander sono fantastici (dove hai una nave spaziale influenzata dalla gravità, i giocatori controllano la direzione e la spinta, il carburante limitato quando usano la spinta). Acquisire esperienza nell'implementazione di una fisica molto semplice e il sistema di collisione può essere piuttosto primitivo. Nessuna intelligenza artificiale di cui preoccuparsi e, soprattutto, è divertente e avvincente :)


2
I giochi in stile Thrust / Lunar Lander concordati sono grandi progetti iniziali. Trattare con rotazione e velocità / accelerazione rivelerà i misteri di seno / coseno (per chiunque non li abbia trattati per un po '). È possibile utilizzare una mappa a tessere statica o scorrevole e utilizzare il rilevamento delle collisioni senza la necessità di una risposta alle collisioni molto complessa (toccare qualcosa -> esplodere). È anche buono per pensare alla messa a punto del sistema di controllo - ottenere un buon equilibrio tra spinta, gravità e velocità di rotazione per farlo sentire giusto
bluescrn

@bluscrn in realtà è un ottimo commento. Dopo aver indotto le persone a provare la mia versione flash, ho notato che le persone avevano opinioni diverse su come dovrebbe essere. Parte di questo è stata attribuita a giochi precedenti vissuti dall'utente. Non era qualcosa a cui avevo pensato in particolare prima di svilupparlo.
Allan,

2

Uno sparatutto spaziale top-down come Galaga è abbastanza semplice e insegna abbastanza bene il rilevamento delle collisioni! Può anche variare in difficoltà, da un livello con nemici stazionari a livelli multipli quali potenziamenti per armi e nemici che si muovono in schemi speciali.


1

Qualcosa come Gauntlet, perché hai bisogno di un sistema di entità, IA nemica, pickup, mappe delle tessere, rilevamento delle collisioni, punteggio ecc. Ha tutto, ma non in un modo travolgente.


Direi che l'IA nemica e il rilevamento delle collisioni con un layout arbitrario di tessere È schiacciante se hai poca o nessuna esperienza, soprattutto considerando la fisica che devi anche fare: attrito tra il giocatore e il terreno, ecc. Questo può essere un buon sfida dopo alcune partite
Sean James,

D'accordo, un po 'travolgente per le persone che hanno appena iniziato. Troppi concetti contemporaneamente. Inizia con qualcosa che è solo punteggio e input. Quindi crea un gioco che faccia 1 o 2 cose nuove, come il rilevamento delle collisioni e i nemici. Continua a scegliere giochi basati su concetti che conosci ma introduce qualcosa che non conosci; se non ne conosci nessuno, non dovresti provarlo. Mantienilo semplice.
user384918

Onestamente penso che ci sia troppo da fare in un clone di Gauntlet per essere considerato un gioco "entry level".
PhillC,

Sinceramente penso che sia più facile codificare Gauntlet che Tetris, poiché capire come i blocchi si sovrappongono l'uno sull'altro, se una linea è completa e come rimuovere le linee, sono problemi astratti piuttosto complicati. Gauntlet può essere codificato in meno di 1000 righe in qualsiasi moderna piattaforma 2D e, se non è possibile nella piattaforma che stai utilizzando, suggerirei di trovarne un'altra. Comunque, l'ho suggerito proprio perché richiede l'apprendimento di tutte le parti che compongono un gioco moderno.
Iain,

Ottieni punti extra per aver fatto correttamente la voce: "Elfo ha sparato al cibo!" "Il mago sta per morire!" o il mio preferito: "Hai trovato il mio rooom sicuro per VASSOIO!"
rtperson,

1

Un mini clone di Zelda è buono ed esercita alcune abilità che non sono state menzionate molto qui. Lo scorrimento di una grande mappa di tessere e semplici controlli di movimento a 8 direzioni sono utili. Punti bonus se riesci a fare nemici, ma non me ne preoccuperei troppo.


1

Ho realizzato più di alcuni cloni di Tetris. Ogni volta che l'ho fatto l'ho fatto leggermente diverso però. Oggi di solito faccio clonare un certo tipo di asteroidi. Ho anche fatto più di alcuni spinoff del Missile Command.

Ho iniziato con il gioco base e poi sono passato ad aggiungere più cose, potenziamenti ecc. Ad esso.


1

Ho sempre iniziato con un gioco Tanks / Gorillas / Worms. Ti consente di esercitarti in una semplice visualizzazione grafica e leggere l'input dell'utente, oltre a un loop di gioco che applica gravità al proiettile e test per il rilevamento delle collisioni.

Dopodiché verrebbe un gioco come un platform o sparatutto molto semplice in cui è necessario leggere l'input dell'utente in tempo reale, anziché le istruzioni INPUT che funzionano per Gorilla :)


1

Il solitario (o qualsiasi altro gioco di carte) è un buon gioco per sporcarti le mani con un nuovo sistema di interfaccia utente, in quanto esercita molti dei widget e dei meccanismi di feedback dell'interazione del controller che devi usare. Inoltre la logica è semplice e inequivocabile, quindi puoi concentrarti sull'apprendimento e non sul design del gioco.

Per i giochi di simulazione in tempo reale, consiglierei sempre Pong come un buon semplice punto di partenza, sempre perché il design è semplice, così come l'interfaccia del controller, in modo da poter arrivare alla carne del sistema: la simulazione fisica.


1

Ho sempre affermato che se sei un programmatore di giochi dovresti essere in grado di creare una forma di Space Invaders . Diamine, il gioco è abbastanza semplice che dovresti essere in grado di fare anche tu la grafica.

Avere una selezione di piccoli giochi nel tuo portafoglio come ulteriore vantaggio di essere abbastanza utile, ad esempio, se sto imparando un nuovo linguaggio o framework di programmazione, spesso porto uno dei miei semplici giochi attraverso per vedere come il nuovo modo di fare le cose coincide con il modo in cui è stato scritto l'originale.


1

Dipende davvero da quali abilità di programmatore regolare hai già. La tua matematica ha bisogno di lavoro? La tua conoscenza grafica? Hai entrambi sotto copertura?

Anche se in generale penso che anche Tetris e Breakout sarebbero i miei due primi. Nulla di più facile di così non offre abbastanza stimoli. Tetris è un buon test su come disporre i tuoi dati in un algo, il breakout è un esempio matematico leggero. Dico sempre alle persone di puntare in alto, l'obiettivo è quello di rimanere bloccati e trovare una soluzione.

Dopodiché, il cielo è il limite. Ancora una volta, punta in alto. Prova un platform con terreno in pendenza, parralax e avrai una buona borsa di tecnologia 2D a portata di mano. Aggiungi un flipper (preparati ad essere frustrato) e la tua matematica migliorerà.

Da lì vai alla terza dimensione, impara le abilità di base (animazione, rendering) e dovresti essere relativamente ben attrezzato per affrontare una buona varietà di giochi.


0

Direi che un tipo di gioco di Tower Defense è il posto migliore da cui iniziare. Puoi anche iniziare modificando i giochi / i motori già esistenti (WarCraft III / HalfLife2 SDK / ecc.) Per comprendere la logica complessiva necessaria, quindi passare all'utilizzo della tua base di codice.


0

Il mio primo gioco è stato qualcosa come Super Mario.

Muoviti, evita gli ostacoli, salta. E tutte quelle attività possono essere facilmente eseguite senza alcun calcolo fisico.

È l'ideale per prendere una semplice cosa 2D, poiché non farai molto affidamento su una specifica implementazione / framework / engine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.