Quali sono i fondamenti dello sviluppo del gioco? [chiuso]


12

Non capisco come un videogioco possa essere codificato.

Sono un programmatore principiante e ho solo esperienza di scrittura di applicazioni console che fanno matematica e cosa no. Non capisco come questi processi logici possano far muovere le immagini sullo schermo (videogiochi). Ovviamente, se fossi saltato in un libro sullo sviluppo di giochi o qualcosa del genere, avrei capito, ma attualmente sto ancora ottenendo una comprensione dei fondamenti della programmazione in generale. Qualcuno potrebbe dare una spiegazione semplice, codifica saggia, nel salto tra fare un computer fare matematica semplice per far produrre a un computer programmi grafici sorprendenti come i videogiochi? Forse ci sono alcuni video introduttivi che qualcuno può indicarmi?

Risposte:


14

Supponendo che tu sia un principiante assoluto nella programmazione e per basare il mio esempio su qualcosa che potresti sapere, mentre scrivi un'applicazione console che ha un menu in cui desideri che l'utente scelga tra le opzioni disponibili, cosa farai prima?

Se hai pensato di creare il tuo menu, hai ottenuto un punto, ma cosa succede se dopo che l'utente ha premuto un tasto che non fa parte dell'opzione disponibile,

  1. uscirà l'applicazione o
  2. deve continuare fino a quando l'utente preme il tasto "Esci"?

La mia scommessa sarebbe # 2, l'applicazione deve continuare fino a quando l'utente preme espressamente il tasto per uscire dall'applicazione console.

Un gioco è in qualche modo simile! Quando vuoi che il gioco esca? Quando l'utente sceglie di, giusto? Quindi, l'azione o il menu di gioco deve durare fino a quando l'utente desidera uscire. Quindi, dovrai creare un ciclo che dice al programma di continuare fino a quando non viene premuto questo tasto per uscire.

Sei appena stato introdotto nel Game Loop. Un gioco è solo un altro programma che viene eseguito fino a quando non viene espressamente abbandonato dall'utente.

Durante il ciclo di gioco, quando giochi, le mosse sono immagini disegnate sullo schermo a coordinate specifiche. Quando l'utente / giocatore preme un tasto direzionale come [Left], quindi fai in modo che l'immagine aggiorni le sue coordinate mentre decrementa la sua coordinata X in modo da dare l'impressione di un movimento verso la direzione sinistra. Devi ottenere questi input per ottenere l'azione che il giocatore vuole che il suo personaggio / nave faccia dopo. Quindi, il Game Loop continua a girare fino a quando non puoi ottenere un'altra azione desiderata dal giocatore, fino a quando il gioco non termina.

Beh, temo che questa risposta inizi a essere abbastanza lunga, quindi spero di indicarti altre due domande che potrebbero interessarti, spero.

  1. Da dove iniziare a scrivere giochi, tutorial o simili?
  2. Spostare il mio sprite in XNA usando le classi .

Questo terzo collegamento non riguarda come iniziare a scrivere giochi, ma come spostare uno sprite sullo schermo. Dato che hai anche chiesto come spostare la grafica sullo schermo, ho pensato che questo potesse interessarti.

Spero che questo possa essere d'aiuto! =)


4

Durante la creazione di applicazioni console, molto probabilmente usi funzioni chiamate print () o read () o write (). Invece di questi, i giochi grafici usano altre funzioni che possono essere di basso livello come set_pixel () per impostare il colore di un singolo pixel sullo schermo, su interi framework che ti permettono di disegnare modelli tridimensionali con molti effetti.

Ma l'idea principale è la stessa di una semplice applicazione console matematica. Ottieni input dall'utente, agisci in base ad esso per modificare alcune variabili, quindi stampa (o disegna) un output. I giochi e altri programmi interattivi eseguono 30, 60 o più di questi cicli di input-calcolo-output ogni secondo. Ovviamente, ogni parte può essere complessa come vuoi, ma di solito tutto si riduce a input-calcolo-output. Quindi non preoccuparti, sei sulla strada giusta.

Per quanto riguarda i consigli, direi che continui a programmare il più possibile. Se sei interessato a concentrarti sulla programmazione del gioco e conosci solo la programmazione della console, prova a creare una piccola avventura basata su testo o gioco di ruolo. In questo modo ti eserciterai molto su come gestire le tue variabili, usare numeri casuali e organizzare il tuo codice.

Dopo aver acquisito esperienza con questo, affronta le basi di una libreria grafica. Se stai facendo una programmazione procedurale, consiglierei OpenGL, mentre se stai facendo una programmazione orientata agli oggetti, consiglierei XNA.

Tuttavia, non prendere troppe cose contemporaneamente. È molto facile rimanere delusi dall'apprendimento di uno strumento complicato, mentre stai imparando a gestire un albero dei sorgenti, mentre stai imparando come iterare su un array, mentre stai imparando come ottenere input e suono, tutto il tempo stai progettando il tuo gioco.

C'è ancora molta strada da percorrere, ma ricorda che il divertimento è in realtà attraversarlo.

Continua così!


4

Un gioco per computer è un ciclo infinito di:

  • Aggiornamento: fai avanzare lo stato del gioco di un piccolo intervallo di tempo (come 1/80 di secondo).
  • Dipingi lo stato di gioco corrente.

Ci sono variazioni di questi. Alcuni giochi hanno più aggiornamenti tra ogni colore, oppure possono variare per rendere il flusso del gioco uniformemente uniforme su macchine diverse. Ma quelli sono dettagli tecnici.

La fase di aggiornamento che si verifica tra 50 e 100 volte al secondo (sì, è così spesso) fa questo:

  • Aggiorna la fisica dei giochi. Dì che un attore ha una velocità. L'aggiornamento dovrebbe spostarlo di un po 'nella giusta direzione. Inoltre, se si utilizza un motore fisico, dovrebbe verificare la presenza di collisioni con altri attori o ostacoli.
  • Aggiorna le regole dei giochi. Questo è ciò che lo rende un gioco e non un esperimento di fisica. Supponiamo che un proiettile abbia colpito l'attore giocatore. Le regole del gioco dicono al giocatore di dedurre X punti di salute e il proiettile di sparire.
  • Aggiornamenti AI. A volte gli attori controllati dal computer dovrebbero meritare cosa fare. Vai a sinistra o a destra? Trova un percorso per un bel posto dove stare. Spara un'arma.
  • Controllo di input. Aggiorna l'attore giocatore in base ai pulsanti premuti sulla tastiera.
  • Aggiorna il grafico della scena. Questo può far avanzare un'animazione di un passo o aggiornare la GUI per mostrare che il giocatore ora ha 10 punti in meno di salute. Il suo unico scopo è quello di rendere il gioco bello e piacevole.

Da dove inizi?

Il requisito di base per un gioco grafico è programmare la grafica. Assicurati di poter aprire una finestra e disegnare una palla al suo interno.

Presumo che tu possa fare una sorta di lezione. Fai una lezione di ballo. Ha i seguenti membri: x, y, deltaX, deltaY. Tutti sono numeri interi e in scala di pixel. Ora scrivi questo ciclo.

forever, do this {
  start measure time (in milliseconds)
  //physics part
  add deltaX to x
  add deltaY to y
  if x is bigger than the screen width, assign -deltaX to deltaX
  if y is bigger than the screen height, assign -deltaY to deltaY
  if x is less than 0, assign -deltaX to deltaX
  if y is less than 0, assign -deltaY to deltaY

  //paint
  paint the ball at x, y
  stop measuring time, assign this to workTime
  make the thread sleep for (25 - workTime) milliseconds
}

Questo farà rimbalzare la palla dei confini delle finestre. Non è ancora un gioco , piuttosto una simulazione fisica. Se scrivi l'aggiornamento della fisica delle palline all'interno della classe delle palline, è facile aggiungere diverse palline. Memorizzali in un elenco e aggiorna e dipingi ciascuno per ciascun fotogramma.

È possibile aggiungere una paletta (simulare la fisica per essa e renderla controllabile con il mouse o la tastiera) e un obiettivo di gioco come impedire alla palla di raggiungere la parete sinistra. Se il gioco aggiunge sempre più palline nel tempo, la difficoltà aumenterà. Hai un gioco.

Perché dormire per (25 - workTime) millisecondi? Se lo fai in questo modo, la simulazione verrà eseguita a un ritmo costante di 40 aggiornamenti e vernici al secondo. Sarà abbastanza liscio. Se salti la parte sleep, l'animazione sarebbe a scatti e occuperebbe il 100% della CPU. Inoltre, la velocità della palla dipenderà dalla velocità della macchina che la esegue. Ora, la velocità verticale della palla è di 40 * deltaY pixel al secondo.


2

Prendi il tuo programma di console che fa matematica, e poi quando inserisci una risposta corretta, fai sparare alcuni coriandoli ... È diventato un gioco (chiunque oltre a me gioca a Math Blaster da bambino? :)).

Per quanto riguarda il modo in cui i computer sono creati per creare ambienti di gioco, a volte può essere un po 'troppo avvolgente, ma si tratta di un'applicazione della comprensione umana del mondo che li circonda. I giochi usano la stessa matematica, la fisica e le scienze per definirsi mentre applichiamo il mondo che ci circonda per spiegare come funziona.

I giochi Sim sono un buon esempio di reale al virtuale. Molto tempo fa ho letto un'intervista con il ragazzo dietro i giochi Sim e quasi tutti, senza eccezione, sono nati dalla lettura di un argomento che cercava di spiegare il mondo che ci circonda, quindi sfruttato con formule matematiche e inserito in un ambiente virtuale per rappresentarlo. SimCity, ad esempio, è nato dal tentativo di simulare le basi delle economie.

Per quanto riguarda le specifiche di come creare un ambiente di gioco 3D, inserire la fisica, aggiungere un po 'di audio, lasciare che un utente inizi a interagire con esso .. Bene, questo è ciò che questo sito e molti altri sono qui per e sarebbe impossibile riassumere in una risposta più specifica.

Alla fine descrivo i videogiochi come database di set di dati limitati molto velocemente. Sono fortemente focalizzati sui dati relazionali e sull'accesso ai dati ad alta velocità. Voglio dire, se si esegue il rendering di un frame ogni 60 ° di secondo, si stanno elaborando quantità potenzialmente elevate di dati molto velocemente in base alla relazione di dove si trova il giocatore nel gioco a tutti gli altri dati tracciati dal gioco :)


Lol, "i videogiochi come database di set di dati limitati molto velocemente" probabilmente aggiungono solo confusione.
michael.bartnett,

1

Quello che devi capire sono le matrici. Sostengono i giochi. Una volta compreso il potere delle matrici, vedrai come i giochi si riducono alla semplice matematica.

Prendi una posizione di vertice nello spazio di gioco. Lo proietti usando una matrice sullo schermo (trova le coordinate dello schermo). Interpoli alcuni pixel tra esso e i suoi vertici vicini e il gioco è fatto. Questa è ovviamente una semplificazione estremamente grande, ma i fondamenti della rasterizzazione non sono affatto complessi una volta che si grugniscono le matrici.

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.