Recentemente ho provato a scrivere un gioco in C#. Non sto usando XNA per questo, perché pensavo che avrei imparato di più se ho codificato il gioco da zero (anche se sto usando un motore multimediale).Programmazione giochi - comunicazione tra oggetti di gioco in 2d
Sto provando a progettare un gioco di ruolo in 2D, un po 'ambizioso, lo so, tuttavia ho una comprensione abbastanza buona almeno delle parti di base del gioco (cioè il codice' piastra di cottura '), e io' Ho raggiunto una parte in cui non so dove andare da qui.
Nel gioco 2D, si progredisce attraverso il gioco camminando intorno a diverse 'aree'. Una volta premuto un "riquadro portale", si viene trasportati nell'area successiva, ecc.
Non riesco a capire come devono essere impostati questi oggetti area. Questa è stata la mia prima idea: ogni area ha alcune strutture di raccolta diverse (ad esempio, un quadrangolo di visibilità, un quadruplo di collisione, un elenco di entità AI ecc.). Quindi, se dovessi aggiungere un'entità nemica nel gioco, verrebbe inserita nel quadrangolo di visibilità, nel quadruplo di collisione (perché puoi scontrarti con le entità) e nell'elenco delle entità AI. Quando l'area riceve una richiesta di aggiornamento, dice a ciascuna di queste strutture di aggiornarsi, il che a sua volta comunica alle entità di aggiornarsi. Tutto bene, finora.
La mia domanda è questa: cosa succede se questo nemico ha bisogno di comunicare con altri oggetti? Ad esempio, potrebbe essere necessario sapere se il giocatore si trovava in un certo intervallo di esso. O se sia stato colpito dal giocatore. O dove tutti gli oggetti collidabili sono nell'area (quindi potrebbe pathfind).
La prima (e cattiva) soluzione a questo problema sarebbe semplicemente passare ogni entità un riferimento a ciascuna raccolta. Ma questo ovviamente incoraggia gli oggetti strettamente accoppiati, il che non è buono.
La seconda soluzione che ho elaborato era che ogni entità fosse in grado di interrogare l'area, tramite le strutture dei messaggi. Quindi un nemico sarebbe in grado di dire "Dammi un elenco di ogni entità entro X distanza dalla mia posizione" e l'area restituirebbe una risposta. Tuttavia, questo diventerebbe sempre più difficile poiché dovrei codificare sempre più possibilità nell'area ("Dammi un elenco di entità che non si trovano entro X distanza da me stesso", "Dammi un elenco di tutte le entità con salute inferiore a X "ecc.).
Quello che sto cercando è una soluzione testata nel tempo per questo problema di comunicazione tra oggetti e fondamentalmente come impostare un'area. Suppongo che avrebbe bisogno anche di una sorta di sistema di messaggistica, anche se non ne sono sicuro.
Grazie per la lettura.
muro di testo è spaventoso – Chad