Lucidare il mio progetto attuale sarà un'esperienza di apprendimento migliore che avviarne uno nuovo? [chiuso]


15

Ho iniziato a programmare molti anni fa. Ora sto cercando di creare giochi. Ho letto molti consigli per iniziare a clonare alcuni giochi ben noti come galaga, tetris, arkanoid, ecc. Ho anche letto che dovrei andare per l'intero gioco (compresi menu, suono, punteggio, ecc.).

Ieri ho finito la prima versione completa del mio clone arkanoid. Ma è tutt'altro che finito. Posso ancora lavorarci su per mesi (programma come hobby nel mio tempo libero) implementando un commutatore di risoluzione dello schermo, rimappando i tasti di controllo, potenziamenti che cadono da mattoni rotti e un enorme ecc.

Ma non voglio imparare per sempre come clonare UN gioco. Ho l'impulso di arrivare al clone successivo per applicare alcune idee di design che ho trovato durante lo sviluppo di questo clone aranoide (allo stesso tempo sto leggendo il libro GoF e molto codice sorgente dal concorso di gioco Ludum Dare 21).

Quindi la domanda è: dovrei continuare a migliorare il clone arkanoid fino a quando non ha tutte le caratteristiche del gioco originale? o dovrei passare al clone successivo (ci sono quasi infiniti giochi da clonare) e iniziare a riparare le cose che ho fatto di sbagliato con il clone precedente?

Questa può essere una domanda molto soggettiva, quindi ti preghiamo di limitare le risposte al modo più efficace per imparare a creare i miei giochi (non clonare le idee di qualcuno). Grazie!


UNA PRECISAZIONE

Per chiarire cosa ho implementato, faccio questo elenco:

Funzionalità implementate:

  • Capacità di rimbalzo (la palla rimbalza sui muri, sui mattoni e sulla barra).
  • Suona quando rimbalza sui mattoni e sulla barra e quando il giocatore vince o perde.
  • Menu del titolo di base (solo nuovo gioco ed uscita). Anche menu di gioco e menu vinci / perdi.
  • Solo tre livelli, ma il sistema di mappe è così semplice che non penso che mi insegnerà molto (sbaglio?).

Funzionalità non implementate:

  • Potenziamenti quando si rompono i mattoni.
  • Mattoni complessi (con più di un "punto ferita" e invincibili).
  • Grafica migliore (non sono molto bravo).
  • Programmazione della lucidatura (utilizzare più intensamente gli schemi di progettazione).

Ecco un link alla sua (minima) pagina web: http://blog.acamara.es/piperine/ Mi vergogno di mostrarlo, quindi per favore non colpirmi troppo forte :-)

La mia domanda riguardava le funzionalità non implementate. Mi chiedevo quale fosse il percorso (ottimale) più veloce per imparare. 1) implementare le funzionalità non implementate in questo progetto che sta diventando grande, o 2) creare un nuovo gioco che probabilmente mi insegnerà quelle lezioni e quelle nuove.


RISPOSTA

Scelgo la risposta @ ashes999 perché, nel mio caso , penso che dovrei lucidare di più e provare a "spedire" il gioco. Penso che anche tutte le altre risposte siano importanti da tenere a mente, quindi se sei venuto qui con la stessa domanda, prima di prendere una decisione affrettata leggi tutta la discussione.

Grazie a tutti!


Scusa, ma dire che è una domanda oggettiva, non lo rende obiettivo. Dipenderebbe dalla persona , dalle sue capacità, dagli obiettivi e dalla motivazione, se dovrebbero cambiare i progetti, il che lo rende una questione soggettiva . Semplicemente non esiste un'unica risposta "giusta" a questa domanda.
Ciclope,

Hai ragione, ho pensato a "soggettivo" ma ho scritto "obiettivo" (capita anche a me con sinistra e destra ...). L'ho cambiato.
Alejandro Cámara,

Wups, mi dispiace sentirlo. Tuttavia, odio dirlo, ma non è ancora una buona domanda per questo sito. Lo scopo dei siti StackExchange è quello di creare domande / risposte utili a molte persone, non domande che si applicano solo a una (o poche) persone. Inoltre, dovrebbe esserci (idealmente) un'unica risposta corretta, ma per le persone che in futuro troveranno questo post, alcuni potrebbero trovare una risposta migliore, e altre meglio, una risposta in conflitto.
Ciclope,

1
Ho pensato che non fosse una buona domanda. Ma la ragione per cui l'ho scritto è perché forse qualcuno è bloccato con lo stesso dilema. Anche se non esiste una risposta "buona", la discussione potrebbe chiarire ad altre persone la risposta "giusta".
Alejandro Cámara,

1
Personalmente penso che l'ambito di un progetto di apprendimento dovrebbe includere tutte le funzionalità del gioco (quindi implementare i power-up) ma dopo quello chiamare il progetto fatto e andare avanti; non disturbare la lucidatura della grafica.
jhocking

Risposte:


32

Non sono completamente d'accordo con la risposta di Patrick . Se vuoi avere successo come sviluppatore di giochi, l'abilità numero uno che devi imparare è come prendere un'idea e spedire un gioco completo e raffinato.

Ciò che realizzerai nel tempo (che è quello che ho realizzato dopo diversi anni) è che la programmazione è solo una piccola parte del tuo gioco. È facile, perché è divertente. Ma attenersi solo alla programmazione ti lascerà con una scia di dimostrazioni e dimostrazioni incomplete.

Invece, suggerirei fortemente di creare un sito Web e un blog (Wordpress è ottimo per questo tipo di cose), finire i tuoi giochi (a partire da Arkanoid) e rilasciarli in libertà.

Inoltre, è fondamentale rendersi conto che se lo fai, controlli quando il gioco è finito. Se vuoi 1000 livelli con 10 funzioni principali, va bene. Se vuoi 10 livelli con 3 funzionalità principali, va bene. (In effetti, consiglio progetti più piccoli più frequentemente, perché impari di più e ti concentri molto sulla lucidatura in quel modo).

Modifica: in risposta alle persone che non sono d'accordo, sento di dover chiarire. Se hai creato un gioco solo per uno scopo / esperimento (cosa che faccio sempre ), taglia lo scopo e spediscilo. Nessuno ha detto che Arkanoid ha bisogno di 1000 livelli per essere un gioco raffinato; basta creare abbastanza livelli per renderlo, secondo te, divertente e andare avanti.

È possibile passare anni a giocare e non spedire mai. Ma penso che sia molto più facile cadere nell'altro buco nel fare demo e prototipi tecnici per sempre. Mi ci sono voluti più di 10 anni per smettere di farlo da solo.


3
+1 "la spedizione è una funzione (obbligatoria?)" Sebbene in questo caso sia possibile vedere anche il clone arkanoid come prototipo, e i prototipi dovrebbero essere gettati via quando un concetto è provato o smentito.
Oskar Duveborn,

2
@Oskar è più facile realizzare 1000 prototipi che spedire un gioco. In definitiva, la spedizione ti farà avere successo, mentre i prototipi aumentano solo alcune abilità di programmazione.
ashes999,

2
Perché respingere "basta aumentare alcune abilità di programmazione"? Chiede in particolare dell'esperienza di apprendimento.
jhocking

@jhocking a causa della risposta di Patrick. La mia risposta è specificamente quella di focalizzarmi oltre le capacità di programmazione.
ashes999,

1
@Yannbane Se la gente lo gioca e pensa "sì, è un gioco completo", anche se è un gioco breve, è completo. Di solito sono incompleti i giochi rotti o con un livello simile. Una volta spedito fuori dalla porta, il gioco è fatto.
ashes999,

8

Vorrei suggerire una sintesi delle due precedenti risposte. Fondamentalmente, sono d'accordo che è estremamente importante imparare a prendere un'idea e spedire un gioco completo e raffinato. Internet è disseminata di progetti completati a metà che qualcuno ha iniziato e poi si è annoiato. La capacità di attenersi a un progetto dall'inizio alla fine, quella che chiamo "capacità di finitura", è rara e preziosa, e acquisita costringendoti a metterlo in pratica.

Tuttavia non sei ancora a quel punto del tuo apprendimento; Non consiglierei di farlo con il tuo primo gioco, ma piuttosto di creare alcuni giochi più piccoli con cui imparare prima di lavorare al tuo primo progetto completo.

(a parte: non l'ho mai individuato prima, ma ora che ci sto pensando, penso che la capacità di finire sia la cosa principale che vedo separare gli sviluppatori esperti dai principianti)


AGGIUNTA: Penso che molti disaccordi tra le risposte dipendono solo da ipotesi diverse su dove si trova nel suo processo. Ad esempio, quando ha detto "Ho finito la prima versione completa del mio clone aranoide" che potrebbe significare molte cose diverse. Nel mio caso, dal momento che in precedenza aveva detto "Ho anche letto che dovrei andare per l'intero gioco (compresi menu, suono, punteggio", quindi presumo che abbia effettivamente implementato quella roba e mi sta chiedendo se dovrebbe continuare ancora. caso direi di no; chiama questo progetto fatto e passa al prossimo progetto.

Tuttavia, questo è solo un presupposto da parte mia; in realtà non ha detto di aver fatto quella roba, solo che l'avrebbe letta. Se non ha fatto quella roba, allora direi di non andare avanti fino a quando non hai fatto quella roba.


1
+1 Battimi! Sembra che tu abbia appena iniziato, quindi è più importante fare quante più cose possibili e imparare, imparare imparare. Man mano che migliorerai, puoi concentrarti sulla lucidatura. Altrimenti finirai per passare 2 anni nel tuo primo gioco.
NoobsArePeople2

1
Disaccordo. Puoi passare dieci anni a scrivere codice e non spedire mai un singolo gioco. Oppure puoi spedire un semplice clone aranoide nei tuoi primi sei mesi. Ritengo che quest'ultimo ti renda uno sviluppatore più forte nel complesso, mentre il primo aiuta solo le tue abilità di sviluppo software (e non tanto - non pensi mai agli strumenti, al ciclo di vita, ecc. Solo alla codifica).
ashes999,

Beh, non ho detto che 10 anni ormai? Tuttavia, è una domanda se passare un anno a programmare un mucchio di esercizi pratici prima del progetto completo di 6 mesi sia meglio che fare direttamente il progetto completo di 6 mesi come primo progetto. Questa è una domanda importante nell'insegnamento che faccio; è meglio per gli studenti trascorrere un semestre facendo un sacco di piccoli progetti o un singolo grande progetto che prende l'intera classe? Personalmente mi rivolgo a "molti piccoli progetti per studenti universitari, un unico grande progetto nella scuola di specializzazione".
jhocking

La mia posizione è che, per quanto sia importante il progetto completo, affinché quel progetto abbia successo devi prima aver appreso le basi su un mucchio di progetti precedenti.
jhocking

1
Quali 2 risposte precedenti? A partire da ora, questo è classificato # 2, per voti
ADB

5

Penso che tu abbia la giusta idea che ora dovresti passare al prossimo progetto. Penso che questo perché hai già imparato dal tuo primo e vuoi applicare ciò che hai imparato! Una volta rallentato l'apprendimento delle nozioni di base, sarebbe il momento di clonare funzionalità più profonde da cui è possibile continuare ad apprendere.

Ricorda che stai lavorando sulle capacità di programmazione, non sulla progettazione del gioco, quindi vuoi finire per poter programmare qualsiasi progettazione del gioco quando hai finito di imparare.


3
Sebbene io sia d'accordo con @ ashes999 e voi, ritengo che, nel contesto dichiarato di OP, stia sperimentando implementazioni, imparando a scrivere diversi tipi di giochi. In questo caso, penso che dovrebbe favorire il passaggio alla cosa successiva.
Ingegnere,

In realtà, ha implicato che vuole imparare il design del gioco e non solo la programmazione del gioco. Nella sua ultima frase ha detto "il modo più efficace per imparare a creare i miei giochi (non clonare le idee di qualcuno)".
jhocking

2

Perché non rendere il clone "tuo"? Aggiungi alcuni nuovi colpi di scena interessanti che ti terranno interessato.

C'è un vantaggio nell'avvio del "tuo" progetto, pensi che non sia mai stato fatto prima. La realtà è che qualcuno probabilmente ha già qualcosa di simile. A meno che tu non abbia intenzione di inventare un nuovo genere di giochi, suggerirei di rendere questi "cloni" tuoi.

Esempio, il mio amico al college ha creato un "clone" pong. Lo ha fatto suo, ha aggiunto un nuovo tipo di gameplay in cui un power-up ha permesso di guidare un carro armato dolce per circa 15 secondi e distruggere il maggior numero possibile di mattoni!

Il modo migliore per imparare lo sviluppo del gioco (arte, codice, design) è semplicemente farlo. All'inizio potresti non farlo bene, ma la chiave è semplicemente mantenerlo e scrivere più codice, disegnare più animazioni e progettare più livelli !! Secondo me, non importa se stai "clonando" qualcosa fintanto che lo fai tuo, continua a farlo, rendilo interessante e divertiti!


2

Per rispondere alla tua domanda, , lucidare il tuo progetto attuale sarà un'esperienza di apprendimento migliore che avviarne uno nuovo.

1) Devi prendere l'abitudine di finire le cose. Questa è di per sé un'esperienza di apprendimento.

2) I compiti che sei "troppo pigro per aggiungere" (per mancanza di un termine migliore) possono avere un sacco di lezioni di sviluppo del gioco incorporate in esse, che stai semplicemente saltando.

3) Se sei annoiato di Arkanoid, puoi sempre metterlo da parte e lavorare su qualcos'altro per il momento. Non c'è niente di sbagliato in questo.

1) Troppe cose non finite fanno male. Non puoi davvero usare il tuo prodotto incompiuto per mostrare le tue abilità in modo efficace.

Questo perché avere una serie di cose non finite è come avere un armadio pieno di spazzatura. In parte sembra utile, ma in realtà è tutto molto inutile, e la realtà dell'industria dei giochi è che pochi apprezzeranno la tua "spazzatura" (giochi incompiuti).

I giochi incompiuti sono troppo comuni. La gente li mette là fuori e dice "Duh, questo gioco è stato Sapposa essere StreetFighter .. ora puoi muoverti avanti e indietro .." Non impressionante . Nessuno può vedere nella tua testa quale fosse il gioco "sapposa". Lo vedono solo per quello che è, incompiuto.

Un gioco incompiuto è come una crostata semicotta. Alcune persone potrebbero essere in grado di apprezzarlo, ma in realtà ha un sapore disgustoso e 20 minuti in più nel forno potrebbero rendere ciò che hai già fatto a metà delizioso per tutti.

2) Le funzionalità su cui stai evitando di lavorare potrebbero contenere alcune lezioni molto preziose.

Le cose che ti stai evitando alla fine:

Funzionalità non implementate:

  • Potenziamenti quando si rompono i mattoni.
  • Mattoni complessi (con più di un "punto ferita" e invincibili).
  • Grafica migliore (non sono molto bravo).
  • Programmazione della lucidatura (utilizzare più intensamente gli schemi di progettazione).

Alcune di queste cose che puoi tralasciare. Ad esempio, "Usa più intensamente i modelli di progettazione". Rifattorizzare in questo modo è una perdita di tempo per un progetto di un animale domestico, per applicarlo dovresti semplicemente iniziare un nuovo progetto.

Alcuni di questi sono facili. Ad esempio mattoni complessi. Alcuni di questi sono in realtà molto lavoro . I potenziamenti non sono facili, richiedono che tu abbia caratteristiche di costruzione come pistole, proiettili, richiederebbe l'aggiunta di codice di ray-intersezione.

Penso che quello che stai vedendo sia "mettere in piedi le impalcature è stato così facile ... e sembra che sia quasi finito. La finitura sarebbe così tanto lavoro, potrebbe anche fermarsi ora." Sì, anche costruire il telaio di legno per una casa è "facile" e potrebbe essere metà del lavoro. Muro a secco, elettricità, impianto idraulico, sono tutti "dettagli". Ma non finendo la casa, nessuno "comprerà" quanto sarebbe grande la casa , se solo l'avessi finita.

3) Se sei annoiato da ciò su cui stai lavorando, non c'è niente di sbagliato nell'avviare qualcos'altro.

Questo non significa spazzatura su cosa stai lavorando, ma non c'è nulla di male nel passare un paio di mesi a pensare ad altre cose o ad iniziare un nuovo gioco. Puoi tornare ad Arkanoid con una nuova prospettiva.

Anche un punto finale. Oltre a sviluppare tutte le funzionalità previste di Arkanoid, è ancora più interessante dargli una svolta. Quindi, invece di interrompere il tuo clone, dovresti fare un passo avanti e innovare il gioco originale.


1

La risposta giusta dipende davvero da quello che vuoi fare dopo. Se passi a qualcosa di nuovo, potresti rischiare di ritrovarti a risolvere gli stessi vecchi problemi e di non estendere davvero le tue abilità, ma puoi passare a qualcosa di nuovo. Se continui a lucidare ci sono cose utili da imparare dalla breve lista che hai dato e ti staranno bene in futuro, ma stai ancora lavorando sulla stessa vecchia base di codice.

Quello che consiglierei, e questa è un'opinione puramente personale, è passare a qualcosa di nuovo e salvare lo smalto per quello. Allo stesso tempo, cerca di allungarti con qualcosa di nuovo. Quindi, se al momento non stai usando un'API 3D, imparane una e usala. Se ne stai usando uno, impara l'altro e usalo. Oppure passa a un livello più avanzato a quello che stai utilizzando. Includi un suono, una fisica o un motore di input migliori fin dall'inizio. Qualunque cosa, ciò che vedo come importante è spostarmi un po 'al di fuori della tua attuale zona di comfort e sviluppare più abilità e conoscenze, divertendomi nel 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.