2010-06-13 21 views
5

Background:Rifattore codice C++ per usare un linguaggio di scripting?

Ho lavorato su un gioco platform scritto in C++ per alcuni mesi. Il gioco è attualmente scritto interamente in C++, anche se sono affascinato dalla possibilità di usare Lua per l'IA nemica e forse qualche altra logica. Tuttavia, il progetto è stato progettato senza Lua in mente, e ho già scritto codice C++ funzionante per gran parte dell'IA. Spero che Lua possa migliorare l'estensibilità del gioco, ma non so se avrebbe senso convertire il codice C++ esistente in Lua.

La domanda:

Quando, se mai, è opportuno prendere il codice completamente funzionale C++ e il refactoring in un linguaggio di scripting come Lua?

La domanda è intenzionalmente un po 'vaga, quindi sentiti libero di dare risposte che non sono rilevanti per il dato background.

risposta

6

I linguaggi di scripting sono utili per cose che potrebbero cambiare frequentemente o essere estese e possono permettersi il commercio dalla velocità.

Non avrebbe senso usare un linguaggio di scripting nelle proprie librerie principali, perché quelle sono relativamente statiche (tutto ciò che fanno sono processi ripetuti più e più volte) e devono essere veloci. Ma per cose come l'intelligenza artificiale, è un'idea perfetta. Si può modificare l'intelligenza artificiale senza ricompilare e consentire modifiche future abbastanza bene. Una volta spedito, puoi precompilare il linguaggio di scripting e chiamarlo buono.

È anche il migliore per l'estensibilità. Fornisci un'interfaccia Lua al tuo gioco e chiunque può scrivere plugin usando un linguaggio semplice, senza bisogno di compilarlo. Più la tua interfaccia Lua è arricchita, più i plug-in possono essere espressivi e potenti.

Se hai già tutto funzionante, a meno che non intendi provare a migliorarlo o a consentire le estensioni, non vedo davvero un motivo per spogliarlo; hai finito. Sarebbe qualcosa da tenere a mente per il tuo prossimo motore di gioco.

Detto questo, se non hai completamente finito e questo è un genere di hobby/pratica, ti consiglierei di farlo. Sarà la tua introduzione nell'aggiungere funzionalità di scripting al motore di gioco. Quando riesci a realizzare motori più grandi e complessi, non dovrai preoccuparti di qualcosa di nuovo.

+0

Quindi, se sono sicuro che parte del codice AI non cambierà mai, ti consiglio di lasciare quel codice in C++ o di portarlo a Lua con tutto il resto per coerenza? Grazie per la risposta utile. –

+0

@Justin: dipende dai tuoi obiettivi. Se è definitivamente fatto e alla fine hai bisogno di essere finito presto, lascialo e passa ad altre cose. Ma se questa è una cosa di apprendimento, portalo per ottenere la pratica. – GManNickG

+0

È possibile utilizzare un approccio ibrido. Alcune parti dell'IA che potrebbero essere utilizzabili dall'IA alternativa e sono critiche per la velocità potrebbero essere lasciate in C. Lo script Lua sarà solo l'orchestratore, più o meno. –

2

Quando, se mai, è opportuno prendere codice C++ completamente funzionale e rifattarlo in un linguaggio di scripting come Lua?

Raramente. Qui è quando ho fatto:

  • ho voluto modificare il design o aggiungere funzionalità in modi che mi richiederebbe di rivisitare il codice C++ in ogni caso.

  • Ho trovato parti del codice C++ che ho continuato a cambiare continuamente.

  • Credevo che migrando da C++ a Lua avrei potuto rendere il codice cinque o dieci volte più piccolo.

I primi due proiettili sono cose che chiunque può fare. Il terzo richiede una certa esperienza.

Problemi correlati