Showing posts from 2011

Enigma Ogre Client

Those of you keeping tabs on the SVN commits may have noticed I recently added a new project called EnigmaClient-Ogre to source control. It's exactly what it looks like I have finally added a new graphical client which will take the place of the old Irrlicht based client that used the old architecture. Several of the problems I was having before are addressed by this move. One issue was the lack of flexibility in the Irrlicht GUI system. I'm now using CEGUI which thus far has proved to be much more flexible and powerful than anything I could have thrown together. Also although not used yet Ogre has a paging scene manager which is what I was trying to achieve with the land blocks in Irrlicht accept it is better.

Part of the reason for starting the new graphical client now is simply that the features I'm working on are getting harder and harder to implement using a console interface. At some point it will surpass the effort to just implement it graphically. Fortunately for me…

Enigma's New Home

Beyond the Enigma coding effort there is a separate but related effort to to actually make a game out of this thing. Previously this had been hosted on a site called Enigma RPG however Brandon and I need a site where we and those to work with us can post all of our game projects big and small. We also needed a name for all of these little projects to fall under. With all of that in mind the Enigma game information is now hosted on don't worry we didn't sell out to the man I own the domain and it is merely a place for those of us working on these neat little projects to post our work. We are still working on building the team though.

That is all for tonight I have a cabling job in the morning, thanks for reading.

Can You Hear Me Now?

I recently completed the addition of Guilds to Enigma and I just moved on to re-implementing the voice chat. However there were some problems with the previous version which I will have to address while I'm working on that section. All of the audio functionality has been moved to the new EnigmaAudio library. This will handle audio input and output. Right now it has the ability to play audio from any format supported by sndfile from a filename. At some point I'll probably add the ability to play by id like with maps and other resources. For now however it is working pretty well and gives me a good base for working on the new voice chat.

One of the voice chat issues I previously mentioned is that before I was actually just sending raw PCM data over the network which is obviously not going to work over the internet it did however allow me to test the mechanics of OpenAL. I've been doing some reading and my intention at this point is to use speex to encode the audio and then se…


MSVC is just about working my last nerve with this one. In the past I've had strange issues here and there like the compiler ignoring things it shouldn't however this one takes the cake. Right now I don't have any lock on the id of my entities because if I add the mutex to the base object class or even a different class such as storableobject then the compiler crashes with an error code of C1001.

Now for those of you who don't know basically a C1001 means the compiler got confused and gave up more or less. If you Google it you'll get allot of listings of other people having the same issue under different circumstances. The thing I'm struggling with is the fact that this is still an issue even though I have all the service packs and other updates for visual studio 2008. I've contemplated trying 2010 but I really doubt it will work any better. C++ is kinda getting ignored these days because it isn't trendy.

I guess at this point this is more of a rant but h…

Login restored

This morning I finally added the command parser to the session manager. Although it seems like a strange place for it putting it there seems to work rather nicely thus far. For example some commands are simply chat message so I simple push a chat event unto the event queue and I'm done. I have access to the transmission manager through an interface so sending messages to the server isn't an issue either.

After getting the command parser in place I tested a couple simple commands then added a brand new login command. although mostly useful for the console client I'm thinking it could also be useful for a voice based client if one were ever created. At any rate I tested it and it worked after a couple bug fixes. I'm one step closer to getting Enigma back up to the functional level it was at before I started the rewrite. I want to have community features restored before Enigma's 3rd birthday but we shall see I'm getting pretty close and I have allot of ground to co…

Connection Established

It's been a long boring road to get to this point but tonight I got the new test client to connect to the server. Unfortunately that is all it is able to do at this point but that is still huge process in theory connecting the events to the new client should be relatively easy. In any case I should find out pretty quickly how fruitful all of my new architecture work has been. I'm excepting a few bugs here and there but hopefully nothing major.

After I get chat and such working again I'm going to start working on getting audio back in the game. Yes ... that's right audio in a console client. The reason is that the audio component should be fed from events so really it isn't tied to out the scene is presented and developing it with the test client should make it pretty easy to drop in once I have a new graphical client.

Also I'm thinking about completely recreating the RoadMap because the client is effectively below version 0.1.0. I should catch up to where it was …

It's Almost Enigma's Birthday

I was looking over my old blog posts a little this morning while adjust Enigma's project road-map and I realized that Enigma will be turning 3 years old on October 5th. Obviously it was just an idea in my head at that point and the Phoenix Kit project is much older than that it is still in interesting thing.

If you want to see the original blog post a link is provided below.

Enigma Events & Another Glorious Distraction

The Enigma events are now in place all of the events I have accounted for thus far anyway. All I have to do now is start in the client session manager and start adding code to generate events in the message processing functions. I hadn't finished the client session manager so it won't take too long to catch up to where I was and once I do it should be smooth sailing into the next phase which will be creating a test client that uses the new API. My test client will likely be a console application because that reduces the chances of errors in testing the session & transmission code so I can make sure it is solid before rebuilding the graphical client.

One potential difficulty is that on top of the fact I have been playing EQ2 again I have become interested in an operating system called Haiku which may distract me from my Enigma development effort. This isn't anything new though Enigma has been going on for years and there are occasional distractions and normally I come ba…

Enigma Client Events

Work on the client portion of the session library has been slow mostly due to my crazy work schedule. It is hard to dig into code when you never know when your going to get called to do a service call. I finished a recent programming job for one of my actual clients and sub-contracted work has slowed down as of late so I made some decent progress today. For the record I would rather business pick back up though because slow weeks are tight budget weeks.

Anyway down to business although the current approach works just fine on the server side of things (mostly because it is basically single threaded still) the client side will need something a little different. The problem is that although the session manager will keep track of the state there are certain things that have to happen when some events happen. For example when the map is changed the session library just has to change the map Id in the user object and reset the map object(server sends new data). The problem is that the clien…

Small Business

As of late things have changed dramatically with my work situation. By that I mean my place of employment was closed due to the death of the owner. I'm working on an as needed basis for the owners brother which is better than nothing but could definitely use more hours. At any rate I decided to start my own business to pick up some business on the side to supplement my income. The services I intend to provide are custom computer programming, cloud services, and online backup (through a partner). More services are like to be added later.

At anyrate my site for this new business is

Thanks for reading folks.

Enigma Server Core - Update

I have finally created a new server for Enigma which uses the transmission and session layers I wrote about previously. The functionality is largely based on the previous server this is more of an architectural change than a functionality change, however even so I have run into a few bugs here and there. The core server is almost on par with the old server in terms of functionality authentication with a database and configuration from xml files are the only two parts missing that I'm aware of at this point. Both of those will likely be in their own libraries. The reason is that the I'm using the xml parsing functionality of Irrlicht & one of my goals was to decouple all but the client from Irrlicht or any graphics engine for that matter. This will be possible however because irrxml is also a separate library. That means I can use my existing configuration code more or less and just link & include irrxml without including the whole Irrlicht engine.

As for the database th…

Nolson Tools

Quick shout out, I setup for my friend Nick. He will be posting information related to trouble shooting computers and such. I'll likely continue to help him maintain it for as long as he needs or until I get sick of it. At any rate it will be neat to see how it turns out.

Enigma Update

Some time ago I posted about my intentions of creating a transmission and session library for enigma. Well I have completed the transmission library albeit untested and have started work on the session library. First of all this is more work than I bargained for initially. Although I new this was a huge step I hadn't touched some most of this code in so long I forgot how long some of the processes were. It also makes me realize how much work I actually put into this thing so far. Although the meager feature list doesn't look like much it is actually pretty rough making all of that happen.

While I was overhauling things I realized that I hadn't considered the database in my new design plans. That is a pretty big oversight however I don't think it will force me to alter my plans very much. My intention is to make a database abstraction layer like I should have from the start and then have an instance of it owned by the session manager instance. Of course given that design…


I posted previously about the need for a session management library for Enigma. I now realize that there is a need for a transmission library as well that can be called by the session library and the reverse is also possible in cases where the server or client needs to be notified. The reason for this is that currently all the transmission logic is inside of the client & server binaries. This is a problem because I intend to make a console client for testing purposes. Also I'm seeing the importance of modularity more and more. The nice thing about this is that this will allow anyone wanting to reuse some of this code to break out the pieces they like.

My fear at this point is over engineering this thing to the point where I'm working against myself. However the current system isn't working and once again it is growing to the point where my bad design decisions are coming back to haunt me. I think my initial approach would have been fine for smaller projects but it just …


I've been super busy with school as of late and as a result progress on Enigma has slowed down considerably. Also there is a free version of Everquest 2 which I have recently sunk some time into unfortunately. However Enigma is still going it is just another slow spot in development, which happens with for fun projects. There is no money in it so I still need to work and I'm also currently working on a BS degree in project management so writing papers and studying for exams also takes up time.

All of that aside the primary reason for this post is to discuss the creation of a session library for Enigma. Thus far breaking different parts of the game engine up into libraries has helped build times and overall management of the code base. In addition shuffling things around tends to expose weaknesses in the design and hidden bugs.

So what I plan to do is move the client & server logic into a library that will contain the session management information and will be dependent on th…

Memory Management for the New Year

First of all happy new year everyone. I have been working a great deal resolving design issues in Enigma. Most of which caused by me creating hacks to detect issues without a debugger. However there are a few that are just run of the mill oversights. While reviewing these I have been thinking allot about memory management.

Here is what I have come up with so far regarding what seems to work best. For starters using reference variables instead of pointers when possible saves you allot of risk regarding memory leaks. Although in some cases the best solution is a point in which case role with it don't try to hack around it. Also if you have to store virtual base classes in a collection use boost shared pointer. No cleanup and it will get the job done with few hassles.

So far using the stack for variables that last for the life of the application works pretty well. I then use the heap for temporary variables. I think DotNet has a similar memory management strategy and I can see the adva…