A partire da Scratch - È un errore se reinvento la ruota?


31

Di solito ogni volta che voglio iniziare un gioco, penserò di avere una buona architettura di base per il rendering e un migliore loop di gioco da zero. Di solito non voglio usare motori esistenti. Il motivo è che voglio implementarlo da solo per imparare cose.

Ma molti blog e sviluppatori dicono che non è una buona opzione per reinventare la ruota.

Mi sto perdendo qualcosa?


Con quale frequenza "inizi una partita"? Se stai ripetendo rapidamente le idee, fai qualunque cosa funzioni. Se stai realizzando un'opera magnum in cui un passo falso è costoso o il tempo è limitato, perché perdere tempo a reinventare la ruota? Se sei interessato a imparare come funzionano le cose, perché non scrivere la tua tecnologia? Quali sono i tuoi obiettivi qui?
ChrisE,

Risposte:


16

No, non è affatto una brutta cosa. L'apprendimento e la capacità di apprendere è assolutamente fondamentale per essere un buon programmatore.

MA
L'importante quando si costruisce qualcosa da zero è finirlo fino al completamento. Non importa quanto sia confuso e non ottimizzato, se lo completi c'è un senso di soddisfazione come nessun altro. Ti darà un'esperienza preziosa e potrai sempre rendere il codice più elegante o eseguire meglio in seguito quando hai qualcosa di funzionale. Alla fine della giornata, le uniche cose che separano programmatori fantastici e mediocri sono l'esperienza e la pratica.

Naturalmente quando hai fatto qualcosa e vuoi creare altri giochi, non c'è motivo di riutilizzare la tua vecchia base di codice.

Se stai cercando di iniziare una carriera nello sviluppo di giochi, o qualsiasi tipo di sviluppo davvero, l'esperienza ti porterà molto, molto lontano. Ma se stai cercando di sfornare i giochi rapidamente e facilmente (relativamente facilmente, rispetto alla scrittura delle tue cose) usa un motore esistente.

Ad essere onesti con te, una combinazione di esperienza nell'uso del tuo codice e nell'utilizzo di una varietà di librerie e motori diversi ti renderà un programmatore molto migliore.


Grazie Ray è utile! ma puoi per favore elencare anche le meccaniche di gioco ...
Ayyappa,

Nessun problema. Non sono del tutto sicuro di cosa intendi nel contesto della tua domanda originale. Cosa stai cercando in particolare?
Ray Dey,

Va bene lo farò una domanda separata. L'altra domanda in questo post è stata rimossa (modificata) in quanto non mette in relazione un po 'il contesto.
Ayyappa,

+1 per il traguardo : in realtà completare un progetto è una buona esperienza.
Ciclope,

36
i want to implement it on my own to learn stuff.

Questa è probabilmente la cosa più importante. Se il tuo obiettivo è imparare, scrivere da zero il tuo rendering e i motori del loop di gioco va bene e un'esperienza di apprendimento perfettamente buona. Se il tuo obiettivo è creare un gioco finito in modo rapido e semplice, utilizza un framework esistente.


3
+1. Solo perché un'API o una libreria di terze parti può sottrarre tutti i dettagli dell'implementazione non significa che non è necessario conoscerli. L'uso di "ruote standard" ti aiuterà a scrivere più velocemente il codice finito; ma creare la tua ruota ti aiuterà a identificare quali premade sono i migliori e, soprattutto, come ottimizzarli e eseguirne il debug quando i raggi iniziano a spuntare ...
sebf

4
+1 Non reinventare la ruota, a meno che tu non stia imparando a fabbricare ruote.
zzzzBov,

4
ricorda che questo migliorerà le tue abilità nella progettazione del motore di gioco , ma non nella progettazione del gioco.
Dave O.

Anche questa è una risposta degna ... grazie ... ma è un male che non riesca a segnare due risposte :(
Ayyappa,

10

Reinventare la ruota ti insegna come funzionano le ruote.


5

Dipende da cosa stai cercando. Se vuoi imparare, reinventa tutte le ruote che desideri. Conosco persone che hanno scritto i propri caricatori JVM o PNG per diamine.

La maggior parte dei blog probabilmente danno consigli su come ottenere le cose che ti fanno pagare rapidamente, ma non so se sia una buona strategia a lungo termine. Se non sai con cosa stai giocando, come fai a sapere se è una buona scelta? Cosa farai quando colpisci i problemi, vai a lamentarti nei forum o riesci a capirlo da solo?


4

C'è molto scoraggiamento riguardo a questa frase nella comunità della programmazione generale, ma penso che tutti sappiamo che molti di noi non amano altro che reinventare la ruota e trovare un modo per farla girare un po 'meglio, più veloce e più fresca.

Le nuove tecnologie stanno venendo fuori continuamente che hanno bisogno delle persone per reinventare la ruota. OpenCL e altri linguaggi di elaborazione GPU sono un buon esempio.

Potresti usare un framework che includesse le nuove funzionalità di quest'anno, ma realizzandolo da solo, se fai davvero la ricerca e apporti miglioramenti a ciò che è già in circolazione, puoi davvero fare nuove scoperte in termini di prestazioni e utilità.

Dopo aver inventato alcune ruote per farti girare, conosci le tue cose abbastanza bene come un grande bonus!

Inoltre è dannatamente divertente.


1

E c'è chi afferma di essere più produttivo proprio perché reinventa la ruota.

Caso in questione: Eskil Steenberg, creatore di World of Love (video eccellente in cui parla del suo gioco, del suo motore e dei suoi fantastici strumenti e della sua filosofia: http://vimeo.com/18423305 )


1

Se è la tua prima volta, anche solo per l'apprendimento, è ancora meglio usare un qualche tipo di motore perché imparerai cosa può offrirti il ​​motore.

"La ruota" che usa nella metafora è il concetto, non l'implementazione. Anche se non reinventerai la ruota, dovrai comunque scegliere se acquistarne una o farne una per conto tuo. Quindi, creare il proprio motore non è nemmeno reinventare la ruota, è solo che si desidera creare la propria ruota per uno scopo, che potrebbe essere per l'apprendimento, a basso costo, per dimensioni ridotte o qualsiasi utilizzo o requisiti specifici.


0

Il fatto è che ciò che richiede molto tempo quando si fa un gioco è il vero contenuto e la creazione e il test delle risorse, non generalmente la scrittura di codice. Questo è probabilmente il motivo per cui è facile saltare quella parte e utilizzare un motore esistente per poter dedicare più tempo a contenuti, design del gioco e bug di livello superiore.

Penso che fare cose da zero per imparare genererà una buona sensazione per il lavoro dietro i motori esistenti e migliorerà la possibilità di selezionarne uno in seguito, se necessario.

Per divertimento e per l'apprendimento, fai quello che desideri. Se dovessi scrivere da zero le classi della pipeline di contenuti, gestendo tutti i dettagli fastidiosi e i casi limite del file system e dei caricatori di risorse, diventerei pazzo - finché avrò imparato abbastanza da avere una buona conoscenza di come farlo, Tendo ad evitare di farlo se qualcuno lo ha già fatto bene (anche se è vero, molti framework e motori non si adatteranno alla mia idea di "buono" che potrebbe causare la riscrittura di qualcosa). Se non so come farlo, mi piace molto farlo fino al completamento almeno una volta, solo per cogliere i dettagli più sottili di qualunque cosa sia - come già affermato da Ray Dey.


0

È solo un errore se non hai il tempo di imparare. Se hai tempo, cercalo. Se non lo fai, allora non farlo.

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.