Domanda

Più di 5 anni fa stavo giocando con DirectSound e Direct3D e l'ho trovato davvero emozionante, anche se ci sono voluti molto tempo per ottenere dei buoni risultati con C ++. Ero uno studente di college, allora. Ora ho esperienza di sviluppo in gran parte delle imprese in C # e PHP, e lo faccio per vivere. Non c'è davvero alcuna possibilità di guadagnare soldi con gravi sviluppo del gioco nel nostro paese. Ogni giorno sempre più trovo che mi manca qualcosa. Così ho deciso di passare un'ora o giù di lì ogni giorno a fare la programmazione per divertimento.

Quindi la mia idea è quella di costruire una simulazione mondo. Vorrei iniziare con qualcosa di semplice - alcune creature umane simili che vivono la loro vita - come Sims 3, ma molto più semplice, basta bisogni di base, le animazioni di base, risorse grafiche minimi - Credo che non sarà una città, ma solo un grande casa per un inizio. L'idea è quella di avere un qualche tipo di un'applicazione server che memorizza i dati del mondo in database MySQL, e alcune applicazioni client - body-meno bot AI che simulano il movimento e alcune interazioni con il mondo e gli altri. Ma non sarebbe stato divertente, senza 3D. Quindi ci sono anche clienti 3D - posso entrare in quel mondo virtuale e vedere i bot AI viventi. Quando il bot entra area visibile, diventa materiale - carica un mesh e animazioni, così posso vedere. Quando esco, i bot perdono i loro corpi in mesh 3D di nuovo, ma la loro vita virtuale continua ancora.

Con il tempo spero di renderlo come un po 'di sandbox script espandibile fino a sperimentare con vari algoritmi di intelligenza artificiale e così via. Ma io non sono volte alla creazione di un MMORPG in piena regola: D

Ho cercato molte cose possibili avrei bisogno (free e open source) e ora devo fare una scelta:

  • Ogre3D + enet (o RakNet). Vecchio bene C ++. Ma non è rallentarmi così tanto che non avrò più divertente?

  • CrystalSpace. Formalmente non è un motore di gioco, ma molto vicino a quello. C ++ di nuovo.

  • Mogre (Ogre3D wrapper per NET) + Lidgren (biblioteca di rete che è già utilizzato in alcuni progetti di gioco). Bene - mi piace C #, è un bene per la programmazione veloce e può anche essere utilizzato per lo scripting.

  • XNA sembra solo un quadro, non un motore, in modo davvero avere dei dubbi, dovrei guardare anche a XNA Game Studio: (

  • Panda3D - motore di gioco completo con risposte positive. Ho idea piace molto per avere tutti i set di strumenti in un unico pacchetto, ha buone recensioni come un motore di principiante-friendly ... se conoscete Python. Sul lato del C ++, Panda3D ha una documentazione quasi inesistente. Ho 0 esperienza con Python, ma ho sentito che è facile da imparare. E se sarà divertente e stimolante quindi credo che trarrebbero beneficio da un'esperienza in un altro linguaggio di programmazione.

Quale di quelli suggeriresti, non a causa di caratteristiche avanzate o un buon supporto piattaforma, ma per lo più per divertimento, facile flusso di lavoro e espandibilità, e così posso creare e integrare tutte le componenti di cui ho bisogno - il server con il database, bot AI e un'applicazione client 3D?

È stato utile?

Soluzione

Se ti piace Python, ci sono associazioni per Ogre. Scopri python-orco . L'ho usato un po 'e sembrava abbastanza stabile per essere utilizzato. Tuttavia si incontrano il bug occasionale, come la base di utenti non è così grande.

Ho più esperienza con la pianura C ++ Ogre, che mi piace utilizzare un sacco. Io non credo che sarà rallentare più di tanto. Sembra che il progetto potrebbe scalare a una abbastanza grande livello, e sarà necessario un sacco di prestazioni per farlo. In questo caso, C ++ non è mai una cattiva scelta.

In ogni caso una volta che il motore è fatto, è praticamente tutto di scripting. E si potrebbe farlo in un linguaggio ad alto livello se si voleva.

Altri suggerimenti

Ho usato solo XNA, quindi non posso davvero dare un buon confronto agli altri. Devo dire che, mentre XNA è solo un quadro, TorqueX 3D è un motore. Si ottiene l'accesso ai binari del motore TorqueX 2D e 3D quando ti iscrivi a sviluppare per XNA ($ 100 / anno).

Non ho lavorato con il motore 3D, ma ho usato il motore 2D. Devo dire che la documentazione sulle API può essere un po 'scarsa, ma hanno alcuni buoni tutorial di introduzione e un forum abbastanza utile e attivo per le domande che non trovano risposta da parte delle esercitazioni.

La vostra esperienza con C # sarà ovviamente venire molto utile. Dovrete attaccare allo sviluppo di Windows, però, perché non si avrà accesso allo stack di rete (o database) su Xbox 360.

Una volta ho lavorato attraverso il tutorial e sono abituato allo stile di coppia, ho trovato ad essere abbastanza divertente con cui lavorare. E 'molto facile aggiungere oggetti / comportamenti. supporto audio è stato migliorato e reso molto semplice con alcune delle ultime novità del framework XNA. Ha un buon editor per il 2D, e credo che l'editor 3D è decente pure (non hanno realmente provato) per aiutarvi a iniziare la creazione di livelli. Credo che sia privo del personale / database di rete, però, che avrebbe dovuto utilizzare la roba standard .NET o portare in altre biblioteche con cui lavorare.

Credo che varrebbe la pena il vostro tempo per dare un'occhiata a comunque e confrontarlo con gli altri. Io credo che si possa scaricare un libero (30 giorni) di prova, anche senza la firma per XNA se si vuole giocare con essa. Buona fortuna!

Panda3D sembra avere promessa dal momento che ha un modo per modificare le maglie in fase di esecuzione (questa funzione viene a mancare, buggy o altrimenti difficili da utilizzare in molti motori 3D), che sarebbe quello che serve per interattive cambiamenti di maglia lato client registrati da un server comune. Nel database essere sicuri di includere un timestamp sulle modifiche in modo da poter eseguire query appropriati per generare le patch per i clienti di ottenere informazioni di maglia di aggiornamento in quanto è alterato.

utilizzando InnoDB si potrebbe fare qualcosa di tabelle SQL come il mio è probabilmente fuori, ma questo dà l'idea:

create table `vertex` (
  `id` bigint(15) not null auto_increment,
  `when` timestamp default now() not null,
  `x` number not null,
  `y` number not null,
  `z` number not null,
  `cR` number default 0.0 not null,
  `cG` number default 0.0 not null,
  `cB` number default 0.0 not null,
  `cA` number default 1.0 not null,
  `u` number default 0.5 not null,
  `v` number default 0.5 not null
) primary key (id) ENGINE=InnoDB;

create table triangles (
  `p1` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `p2` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `p3` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `when` timestamp default now() not null
) primary key (p1,p2,p3) ENGINE=InnoDB;

id è il vertice id quando viene timestamp che consente di effettuare patch di aggiornamento x, y, z è il punto di vertice 3d Cr, cG, cB, CA è il colore RGBA vertice u, v è la coordinata vertex texture p1, p2, p3 riferimento ai vertici nella tabella vertice per formare triangoli come indicato da detti riferimenti chiave esterna ... InnoDB permette di prevenire vertice definito (es: coerenza) problematiche legate modo possono pure usare. Se è accettabile per rimuovere tutti i triangoli con un vertice eliminata nella vostra situazione cambio 'limitare' a 'cascata' (limitare lo rende un errore per cancellare un vertice con triangoli che lo utilizzano)

Per quanto riguarda l'algoritmo a rete bot, in pratica si sta implemententing un abbattimento LOD per i bot non in vista. Molti motori sono già in grado di fare questo per voi già. Per esempio tutte le maglie scuoiatura / animazione del bot possono essere fatte bambini per oggetto esterno del bot in Panda3D e se l'oggetto esterno del bot è abbattuti su portata visibile allora nessuno dei bambini viene fatto riferimento a tutti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top