I G M U S
Igmus is an open source Interactive Graphical Multiuser Development System.
It is a powerful IDE (code, sprites, scenarios and animations editor), a new multiuser gaming oriented language, a bytecode compiler, an interpreter (the client), and a game server.
IGMUS will make it possible to develop any kind of interactive graphical multiplayer games from click & point games (like Lucas Art classics) to strategy games (Starcraft).
But it's main feature is that it makes you possible to develop full interactive applications, where each users action may entail to some consequence.
This is achived by storing each implemented procedure as a different module, that is downloaded form the server by demand, like the links in a webpage.
Game Admins, may optionally log every not considered action and implement it in the future, if a great number of users are trying to do the same thing.
At this moment, IGMUS uses 2D layer oriented sprites, but in the future, we will incorporate also 3D graphics.
The language is simple (similar to VB or Java) but very powerfull:
- object oriented
- supports user defined objects
- pointers managment similar JAVA or VB
- dynamic objects instances and destruction
- trash recolection
- simple native concurrent process programming support
- concurrent and synchronized execution of several procedures
(you may implement independently a bird animation and a
woman dancing and sining and have the two procedures
- a process may interact with each other
(the bird may sing with the woman)
- native multiuser support
- shared variables managment
- dynamic instance and destruction of shared objects
- shared data domains
(you may specify a set of scenarios where a given
variable or object is visible)
- full transparent clients intercommunication
(zero sockets, zero protocols)
- remote (or replicated) procedure calls
- in order to reduce network congestion, you may define remote
procedures that whell called, will be executed on each client
in a given domain (a set of scenarios).
(ie: you may define the procedure goto(x,y) which handles a complex
movement from a sprite to (x,y), and execute it localy on every client
in spite of sending each variable change)
- dynamic code support
- the system allows updating modules during run time
(you may add a door or a new event/action without forcing
the clients to restart)
- internal functions (native coded in the interpreter) to handle
- cammera scrolling
- sprite layers control
- phrase forming
- dialogs structures
A sprite is an array of frames of bitmap layers, and a set of animations, which defines secuences of frames with given time intervals, and some control flags.
Sprites, for example, may be composed of two layers: the body of a character and a hat. During run time, You may turn the hat's visibility on and off, avoiding the need of two versions for each animation with and without the hat.
Here are some very old screenshots...
Igmus IDE (project browser + code editor + sprite editor + scenario editor)
Igmus IDE (client + server + debugger)
Igmus IDE (project browser + code editor + sprite editor + scenario editor + compiler output)
Igmus Client (+ some logs)
Before I decided to open IGMUS on sourceforge, there was just some minor issues left, I could have fixed in order to reach a Production Stable version. But finally I decided to release IGMUS, because I think there are many things that could be imporved...
The first step will be:
- Port all the stuff to a decent platform
- Rewrite the (Win32/C++) sprites library in Java
- Remove all M$ extensions from the client (they was enabled to use the old sprites library)
- Rewrite the VB IDE in C++/GNOME
After that, we will:
- Improve the shared objects architecture
- Improve the compiler
If you want to join this proyect, please mail me
For more info, visit the official IGMUS development site on Sourceforge