Lo sviluppo di giochi è il modo migliore per imparare a programmare? [chiuso]


21

Di recente ho sentito un mentore di un istruttore che sviluppare giochi era il modo migliore per imparare a programmare. Oltre al fatto che tutto doveva essere creato in codice, ha detto che puoi davvero sperimentare pienamente e implementare OOP nei tuoi programmi. In altre parole, tutto ciò che realizzi in un gioco è un oggetto letterale sia dal punto di vista tecnico che concettuale. È sicuro fare questo presupposto? Oppure ci sono sempre delle eccezioni nell'apprendimento della programmazione?

nota che era orientato allo sviluppo .net / xna / c #.


3
"il fatto che tutto doveva essere creato nel codice". E i modelli 3D, le trame, i suoni e altre risorse? Puoi creare un motore di gioco senza di loro, ma un gioco completo con pochissime risorse, anche se non impossibile, sarà una vera sfida.
POSIX_ME_HARDER,

@Cheshire: Beh, potresti programmarli con cose come Processing. Non sto dicendo che è molto pratico però.
Anto,

2
@Cheshire: Sì, alcune persone affrontano questa sfida molto direttamente, creando tutto proceduralmente. Non troppo comune nei giochi commerciali (per quanto ne so), ma popolare solo per dimostrare che può essere fatto e ho visto alcune demo piuttosto impressionanti come quella.
FrustratedWithFormsDesigner

6
Suppongo che questa domanda significhi "sviluppo del gioco" piuttosto che "giocare" quando si chiede di giocare? Non posso smettere di fare il salto intellettuale da Call of Duty a C ++ ...
HorusKol,

1
Se vuoi che il gioco sia giocabile, potresti scoprire che devi compromettere il design OO puro a favore della velocità.
Peter Taylor,

Risposte:


25

Lo sviluppo del gioco è uno degli sviluppi più stimolanti che ci sia, secondo me. Diamo un'occhiata a tutti i concetti che una persona che crea uno sparatutto in prima persona deve conoscere:

  • Grafica
    • Calcoli 3d
    • Ottimizzazioni della velocità
    • Interfaccia con l'hardware grafico
  • Il gioco
    • Strutture dati
    • Formati di file per il salvataggio
    • Design generale, altrimenti creerai un casino a cui è impossibile aggiungere funzionalità
    • Conoscenza della rete se il gioco è multiplayer
  • Algoritmi AI
    • Individuazione del percorso
    • Combattimento di battaglia
  • editoriale
    • Conoscenza del sistema operativo come funzionamento degli installatori
    • Forse lo sviluppo web per spargere la voce

Vedi, un gioco può coprire molte aree contemporaneamente. Questo lo rende uno strumento di apprendimento eccellente se sei disposto a passare il tempo e renderlo buono.

Per quanto riguarda OOP, questo è uno schema che funziona bene. Puoi utilizzare un gioco come strumento di apprendimento per praticare buone tecniche di progettazione.

Per rispondere alla tua domanda, tuttavia, non è l'unico modo per imparare la programmazione. Una volta diventato uno sviluppatore intermedio, la creazione di un gioco ti permetterà di toccare molti concetti e livelli di programmazione. Inoltre, è divertente!


12
Hai dimenticato una cosa, una storia per quel gioco e, a volte, la storia è tutto ciò che conta.
Mahmoud Hossam,

Questo presuppone che sia un gioco 3D.
Adam Harte,

1
@Adam: Sì, ma anche 2d ha i suoi calcoli. Ora escludo di proposito i giochi di ruolo basati sui test;)
Michael K,

1
@Mohmoud La storia non è MAI "tutto ciò che conta". Questo è un grosso errore quanto avere una storia cattiva / mancante. Ci sono molti aspetti che vanno nel fare un buon gioco. Non voglio giocare a un gioco noioso, non importa quanto sia grande la storia. Anche i puzzle game di maggior successo non hanno una storia.
Adam Harte,

Anche la teoria dei giochi è utile.
VirtuosiMedia,

46

Non essere tautologico, ma la programmazione è il modo migliore per imparare la programmazione. Se sei interessato ai giochi per computer, la programmazione dei giochi può essere un ottimo modo per imparare a programmare.

Non mi piacciono i giochi, ma amo la matematica, quindi molti dei miei progetti di apprendimento erano di natura molto matematica.

La linea di fondo è che è necessario trovare modi per risolvere i problemi con il codice e i giochi funzionano per molte persone.


questo è quello che pensavo inizialmente. Ma considera il tuo assolutamente nuovo alla programmazione. Il gioco sembra uno strumento eccellente per apprendere molti concetti diversi. Michael ne elenca alcuni. Ad essere sincero, vorrei prima aver imparato OOP da una prospettiva di gioco. Ma ciò avrebbe potuto essere dovuto al fatto che era stato spiegato male o che lo sviluppo di applicazioni aziendali rendeva un po 'più difficile comprendere il concetto. È sicuramente interessante osservare entrambi gli argomenti.
Edward,

@penguin in che modo ti insegnerebbe a giocare a Call of Duty o Halflife?
jwenting,

13

È un modo per imparare la programmazione, tra l'altro. Quando scrivi il codice, impari le cose. Adesso è il modo migliore? Non sono così sicuro

Almeno, i due motivi indicati dal tuo insegnante non sono validi .

  • "tutto doveva essere creato nel codice" : quando scrivi un'app aziendale, stai effettivamente scrivendo il codice. Non sarà scritto per magia. Sì, ci sono helper che ti consentono di utilizzare il codice generato automaticamente. No, non è obbligatorio utilizzarli. A proposito, le parti generate automaticamente sono generalmente le più fastidiose della programmazione (non è aggiungendo controlli al controllo Windows Form che imparerai qualcosa di eccitante e utile).

  • "puoi davvero sperimentare e implementare completamente OOP nei tuoi programmi" : qualcuno deve spiegarmi perché questo è valido solo per i giochi, ma non valido per qualsiasi altra cosa. Se capisci OOP e vuoi usarlo, puoi usarlo anche in applicazioni aziendali. Se non lo capisci o non vuoi usarlo (e preferisci usare la programmazione funzionale per esempio), lo sviluppo del gioco non ti costringerà a cambiare.

Ma:

Lo sviluppo di giochi può essere divertente . Alla maggior parte dei giovani piacciono i giochi, quindi si divertirebbero a sviluppare un gioco piuttosto che scrivere un'app aziendale, che sarà estremamente noiosa per la maggior parte di loro. Vedendo questo, gli insegnanti possono iniziare a credere che in realtà il gioco sia il modo migliore per imparare la programmazione, e quindi cercheranno di trovare una spiegazione logica per questo.

Detto questo, quegli insegnanti finiscono per rendere lo sviluppo dei giochi noioso per i giovani come lo sviluppo di app aziendali. Se credono che i giochi debbano essere fatti per imparare OOP ecc., Allora chiederanno ai loro studenti di fare quel tipo di progetti che non sono affatto divertenti. Questo è stato uno dei più grandi errori dei miei insegnanti quando ero al college. Ci hanno dato molto spesso progetti di gioco da scrivere in Ada in modalità console. Nessuna grafica. Non è divertente. Nessuna esperienza utente. In tutta la mia vita e la mia carriera, non ho mai visto progetti così noiosi.


4
Giochi funzionano bene con OOP perché è molto facile vedere come ogni BadGuy, Weapon, PowerUp, e altri oggetti in un gioco può facilmente essere un oggetto. Puoi programmare le interazioni tra gli oggetti e vederli sullo schermo. Penso che la parte visiva sia ciò che la rende così attraente. Le applicazioni aziendali che dispongono di tipo gerarchie di ServerTaskScheduler, AbstractDataProcessor, UserQueryAgent, ecc ... non sono così eccitanti , anche se possono insegnare gli stessi concetti OOP come nel gioco.
FrustratedWithFormsDesigner,

4
@FrustratedWithFormsDesigner: forse non capisco perché ho trascorso troppo tempo a sviluppare app aziendali, ma non capisco perché sarebbe più difficile vedere come Customero Producto come Transactionpossono essere oggetti. Ma capisco che è molto più divertente avere a che fare con BadGuys piuttosto che con noiosi Transaction.
Arseni Mourzenko,

Ha più a che fare con il livello del pensiero astratto. Alcuni programmatori si appiccicano molto ai nomi perché non hanno idea di cosa riguardare. Ad esempio ho incontrato alcuni sviluppatori che non hanno idea di cosa Transactioncomporta.
Spoike,

7

La programmazione dei giochi è il modo migliore per imparare la programmazione dei giochi. Se vuoi imparare lo sviluppo web, fallo, se vuoi imparare la programmazione dei sistemi, fallo e così via.

La programmazione dei giochi è impegnativa e molto probabilmente ti insegnerà molte cose (Michael ne ha notato molte nella sua risposta, e molte di esse sono molto stimolanti e utilizzabili anche fuori dai giochi). La creazione di un gioco di ruolo o di un magnate (o gioco simile) ti insegnerà molto sulla progettazione di OOP perché si prestano molto bene a quel paradigma. Sarai anche in grado di imparare molto sulle considerazioni sulle prestazioni, sulla matematica hardcore per i giochi ecc., A seconda della complessità della grafica e della fisica.

È un buon modo e il modo migliore per imparare alcune cose, ma non è un modo superiore per imparare la programmazione. Indipendentemente dal numero di giochi programmati, è comunque probabile che tu non abbia idea di come creare un sistema operativo. Penso che la maggior parte degli sviluppatori potrebbe ancora guadagnare qualcosa sviluppando un gioco, anche se non lo fanno come principale disciplina di programmazione, purché abbiano il tempo.


7

Domanda: qual è il metodo migliore per imparare la programmazione

Risposta: il metodo che effettivamente fai

Vale a dire, quando impari o fai qualcosa, non importa molto quale metodo scegli così a lungo, è un metodo che effettivamente segui.

Se il gioco è qualcosa che sembra davvero divertente per te, provaci. Se ritieni che la risoluzione dei problemi di matematica sia più soddisfacente, inizia da quello. Esistono molti tipi diversi di programmazione e ognuno richiede competenze diverse, quindi una buona scommessa è iniziare con quella che trovi più interessante, che è probabilmente quella con cui lavorerai.

... Ma sì, il gioco è un buon modo per imparare una vasta gamma di programmi poiché include matematica, concorrenza, algoritmi, oop, grafica, ecc. Ecc.


4

Se ti piacciono i giochi, scrivere giochi sarebbe un buon modo per entrare nello sviluppo, ma non direi che era il modo migliore. Penso che il modo migliore sia un corso di laurea in CS seguito da un lavoro presso una software house che investirà in formazione e tutoraggio del personale junior.

A parte quella risposta sicuramente piuttosto pomposa, sì, lo sviluppo del gioco ti insegnerebbe molte buone abilità, penso, e se ti piacciono i giochi per computer ti manterrà interessato al processo di sviluppo. Deve essere più interessante di molte altre semplici app che vedi nei libri.


2

Direi che il modo migliore per imparare a programmare è renderlo divertente per te. Non deve essere un vero gioco, ma una specie di gioco per te. Per me, è un gioco per risolvere alcuni problemi matematici sviluppando algoritmi in modo da poter risolvere un problema complesso nel modo più veloce possibile. Sfidando me stesso divento un programmatore migliore ad ogni tentativo di risolvere un problema. Più difficile è il problema, meglio è.

Per quanto riguarda l'apprendimento del codice (migliori pratiche), direi che dovresti affrontare sfide più grandi. Le sfide richiedono molto di più di un singolo ingresso / uscita


2

Non ho mai sentito di affermazioni secondo cui giocare a Halflife o Call of Duty ti insegna le abilità di programmazione.

Programmarli potrebbe essere, ma programmare qualcosa del genere non è qualcosa di cui un principiante dovrebbe tentare un po '. E soprattutto i principianti hanno spesso l'impressione di poter creare il prossimo successo con le loro conoscenze di programmazione inesistenti. Di 'loro di provare a creare un clone di PacMan o Tetris e urlano che non è quello che vogliono fare e che dovresti "darmi zuh koduz".


1

Non proprio no. Non esiste un miglior tipo di progetto su cui imparare a programmare. Il miglior tipo di progetto è quello pertinente per i tuoi interessi.

Ad esempio, ho cercato di imparare a programmare un paio di modi diversi, incluso imparare a programmare giochi. Non è mai sembrato restare.

Quindi quando avevo bisogno di imparare a programmare per quello che stavo facendo nella mia ricerca? In questo momento sono abbastanza a mio agio da dire che conosco 2 lingue e sto lavorando su un terzo. Perché? Perché era rilevante per i miei interessi. Avevo un motivo per continuare, un motivo per imparare e altri problemi da provare oltre al semplice "Esercizio 8" nel libro.

Questo, per inciso, non significa che la programmazione dei modelli epidemici sia il modo migliore per imparare la programmazione. Ma è stato il modo migliore per me. Trova il tuo. Potrebbe essere un gioco, ma potrebbe anche non esserlo.


+1 per "il miglior tipo di progetto è quello pertinente per i tuoi interessi". Amen.
Bryan Oakley,

0

Nella mia esperienza, scrivendo un gioco (supponendo che tu lo stia facendo sul tuo / piccolo team di sviluppatori), sei costretto non solo a pensare alla parte algoritmica / analitica della programmazione, ma anche all'esperienza e alla progettazione dell'utente.

Inoltre, se si tratta di un gioco abbastanza complesso, ci lavorerai per un paio di mesi e ti renderai conto dell'importanza di documentare tutto ciò che fai, che in seguito ti renderà un membro migliore di una squadra.


... ma se scrivi qualche tipo di programma che interagisce con un utente, non sei obbligato a pensare all'esperienza e al design dell'utente? Stai dicendo che con un'applicazione client tradizionale non devi davvero pensare a queste cose, ma il gioco ti costringe a farlo? E le applicazioni desktop di grandi dimensioni non possono durare anche diversi mesi e richiedono la documentazione? Come si applica tutto ciò ai giochi ma non ad altri tipi di programmazione?
Bryan Oakley,


0

Sono d'accordo tranne ...

È altrettanto probabile che la prima esperienza di programmazione che molti abbiano mai avuto sia stata la costruzione e la programmazione di un robot Lego (Mindstorms).

Mentre il termine generale "gioco" può definire una categoria così vasta da comprendere quasi tutta la programmazione, quando usata nel contesto del poster originale sembra sempre significare "scrivere giochi in stile Doom".

Come è stato affermato qui in precedenza, il modo migliore per imparare la programmazione è avere qualcosa che davvero desideri che richiede un programma. Cioè: impara a programmare scrivendo il programma che desideri.

Uno dei miei primi programmi Windows era un programma controller MIDI, perché volevo davvero un programma controller MIDI e Windows sembrava la soluzione perfetta (cursori, pulsanti, supporto SDK per MIDI, ecc.). Ho imparato molto sulla programmazione di Windows (questo era tornato nei giorni di Win 3.1) da quel programma.

Non sono mai stato parziale alla programmazione del gioco anche per i motivi menzionati qui - non disegno così bene, quindi qualsiasi gioco che realizzo avrà una grafica più scadente di quella di un artista. Voglio imparare a programmare, non a gestire un "team di game building" (esercizio lodevole ma totalmente diverso).

Alla fine non sono abbastanza d'accordo con l'affermazione dell'insegnante. Il modo migliore per imparare la programmazione è scrivere il programma che desideri davvero.

-R

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.