Comix’s blog

Vita e storie di un artigiano del software :-D

Archive for the 'Game development' Category

Shaders, Mercurial

Sono passato 2 mesi dall’ultimo post e in silenzio ho aggiunto qualche nuova funzionalità al motore di gioco:

Motion blur
E’ il primo tra gli effetti di post-processing che avevo nella todo list. E’ uno tra i più semplici e non richiede per forza l’uso di shaders (anche se in futuro credo li potrò usare per migliorare qualcosa).
E’ una tecnica sicuramente potente ma da il suo meglio solo con un alto numero di frames per secondo.

Motion blur 1

Normal maps e perpixel lighting
Non potevano mancare :-D
Per ora le posso applicare soltanto su oggetti statici…devo ancora indagare come usarle su modelli cal3d.

Migrazione da svn a mercurial
Dopo 1 anno e mezzo di vita e 2000 commit ho deciso di mandare in pensione il repository Subversion per dare spazio a 3 nuovi e più snelli repository Mercurial.

Motion blur 2

E ora al lavoro, prossima feature: Bloom!
Bloom effect

No comments

Sconstruct, TrueType e pomodori

Screenshot 2008-05-08

Recentemente ho dedicato parecchio tempo alla verifica che tutto funzioni e compili correttamente nelle 3 piattaforme: Linux, Mac e Windows.
Linux e Mac non mi hanno dato nessun problema ma ovviamente su windows ho dovuto sputare sangue per vedere qualcosa di decente.
Tralasciando sfoghi e critiche verso il mondo microsoft, ho deciso di modificare pesantemente i sorgenti del game engine in modo da rendere il più indolore e facile lo sviluppo nelle 3 piattaforme.

I cambiamenti principali sono:

  • ho rimosso la libreria SDL in favore di una più leggera e snella GLFW
  • ho sostituito i Makefiles con un più moderno e gestibile sistema di build basato su Sconstruct
  • rimosso il supporto per video Theora (prima o poi tornerà)
  • rimosso l’intero supporto per l’audio (prima o poi tornerà)
  • rimosso TextRenderer basato su bitmap a favore di un nuovo renderer basato su FreeType
  • compilazione su linux e mac con GCC e uso di Visual Studio 2008 su windows

Cambiamento importante ma non nel codice é la scoperta (grazie a Fabio) della “Tecnica del pomodoro“.
Ormai lo uso da 1 mese e mezzo e devo ammettere che nonostante la sua semplicità ha migliorato decisamente la mia produttività.

Lunga vita alla patata, ma anche il pomodoro si merita un applauso :-D

No comments

Game engine su MacOSX Leopard

Game engine on MacOSX Leopard

L’aggiornamento del macmini a al nuovo sistema operativo (Leopard) é stato un disastro!!
Al primo riavvio del pc dopo l’aggiornamento tutto si é bloccato, non con la tipica schermata blu ma con una schermata azzurrina… :-|

Ho dovuto reinstallare tutto da capo…e io che tipicamente lodo la stabilità e la qualità del software apple! :-(

Il game engine è quello che ha risentito maggiormente dei cambiamenti al sistema operativo, soprattutto nel codice di librerie di terze parti come SDL e ODE.
Alla fine, dopo 2 giorni di modifiche e tentativi più o meno riusciti, il tutto é tornato a funzionare come prima :)

1 comment

3D Engine, un anno dopo

Circa un anno fa ho avuto l’idea (malsana) di scrivere da zero o quasi un motore 3D che avrei poi usato per fare giochi…e sono ancora vivo!
Mi sono dato un anno di tempo per scriverlo con la promessa che nel 2008 l’avrei usato per pubblicare il primo gioco…qualunque gioco o aborto ne venga fuori…

Ad oggi ho un motore di gioco che, anche se non perfettamente rodato e con qualche lacuna, mi permette di creare abbastanza facilmente scene complesse in 3D e programmarle con un linguaggio di scripting (LUA).

Per la realizzazione ho utilizzato parecchie librerie open source che mi hanno decisamente alleviato il trauma di dover scrivere tutto da zero:

  • SDL + OpenGL
  • LUA
  • Cal3d
  • Open Dinamics Engine
  • Ogg vorbis e theora
  • Physfs
  • libSOIL

Il tutto, condito con l’esperienza maturata nello scrivere Hydrogen e qualche rito Voodoo per tenere il tutto assieme, *sembra* funzionare! Un anno fai non l’avrei mai detto, ma oggi sono più che soddisfatto! :-D

Riassumendo:

  • motore di gioco che gira su Linux, Mac e Windows
  • posso usare l’editor di gioco su Linux o Mac
  • scripting con LUA (con OOP)
  • Esporter e tools per creare asset da blender

Insomma…tutto quello che avrei sempre voluto avere :-D

E ora…si inizia!

1 comment

1000 commit su svn!

Lo sviluppo del game engine continua! Per il millesimo commit su svn ho deciso di festeggiare!
Ai festeggiamenti si uniscono festosi 100 NPC che saltellano qua e là :-D

100 NPC

No comments

Prima animazione con Blender

Credo che per un bel po’ dovro’ far a meno di grafici 2d e 3d e rispolverare matite e blender.

Ecco la mia prima animazione con blender! …si, si…il modello e’ davvero minimale ma lo scopo era creare delle azioni “loopabili” e metterle in sequenza. Per fortuna Blender non e’ poi cosi’ brutto come lo descrivono, anzi…

Link al video

No comments

Skeletal animation

Dopo qualche tentativo non proprio andato a buon fine sono riuscito ad integrare CAL3D all’interno del motore di gioco! :-D

Cal3D website

What is Cal3D?
Cal3D is a skeletal based 3D character animation library written in C++ in a platform-/graphic API-independent way. Originally designed to be used in a 3D client for Worldforge, it evolved into a stand-alone product which can be used in many different kinds of projects. It supports combining animations and actions through a “mixer” interface, and work is currently underway to integrate morph targets (interpolating between one mesh and another, using the same vertex sequence) easily into the system.


Guarda il video

No comments

Game editor - 2007-09-01

Il motore di gioco e l’editor hanno fatto decisamente qualche passo in avanti negli ultimi 2 mesi.

Aggiunte al motore:

  • frustum culling
  • Loader per modelli in formato OBJ
  • Migliore integrazione con ODE
  • Migliore gestione luci
  • Cache per textures e modelli
  • TextRenderer basato su bitmaps
  • Physfs per la compressione delle risorse

Aggiunte all’editor:

  • Selezione oggetto dalla scena
  • Gestione scene multiple
  • Lista di oggetti presenti nella scena
  • Editor di oggetti (Oggetti dinamici, Luci, Camera)
  • Clonazione di un oggetto
  • Data inspector (visualizza le variabili LUA in realtime, per debug)
  • Viste multiple (Front, Side, Top, Split view)

Uff..troppe cose!

Ah, dimenticavo…il tutto e’ ovviamente cross-platform! Gira su Linux, Mac e Windows!

Ecco lo screenshot obbligatorio :)

Game Editor

No comments

Ancora fisica

Sono ancora alle prese con il modello fisico della barca…qualcosa pero’ e’ migliorato :)
Ho aggiunto 2 “raggi” a meta’ barca per impedire di rimanere “incastrato” sopra un’onda e un raggio (quello rosso) che misura la distanza del motore dall’acqua.

Comments are off for this post

“Coso” con le molle!

Per ora sembra solo un “coso” con le molle, ma il suo galleggiare mi rende felice!
Dopo giorni e giorni di bestemmie a causa di un bug stupido (avevo usato le coordinate locali all’oggetto con quelli globali) finalmente ora FUNZIONA! :)

Nel video si vede il modello fisico che userà per hovercraft e con opportune modifiche anche per simulare una barca.

No comments

Pagina successiva »