Showing posts from July, 2009

Pace of things

So far It has been taking me a couple weeks to push out a release. As of now there are 23 more releases before the final release. So with that in mind I think I should be able to have 1.0.0 out by 2010 or 2011. Assuming the project doesn't get completely canceled once I'm back in school.

I plan on working on it even while in school however I should mention that I will have much less time than I do now. The flip side is I will likely be more focused than I am now.

Also If I'm lucky my studies will help me develop better project management skills and allow me to better manage this project.

Compiler Change Complete

I finally was able to switch over to Microsoft's Visual C compiler for the windows version. It was a big pain. I ran into issues with my string related functions. I was passing const char* around but MSC decided those needed to get cleaned up before they actually made it through the chain of calls.

So I switched to std:string which is probably safer anyway but I passed them by reference at first. That however caused more or less the same problem with a few extra issues here and there. So what I ended up doing is just passing them by value. So what that means is I'm copying them one or two times before they get to the function that uses them to load the related resource. This isn't that great from a performance standpoint but it works flawlessly and I know for sure they are getting cleaned up after they go out of scope.

But anyway the short version of the story is that after many hours of pain and suffering I was able to get it to compile & link with Microsoft's Visua…

You win this round Microsoft

As I have posted many times before I have run into many issues resulting from the fact I have been using MinGW instead of Microsoft's Visual C/C++ compiler. It isn't that there is anything wrong with MinGW but rather that linking with libraries made using MSC is a pain if not impossible in some cases.

The main reason I was using MinGW is that it is the windows port of gcc and as such I was basically using the same compiler on every platform. That was nice because it took very little work to make everything compile on every platform. Once the development environment was setup and all dependencies were in place that is.

Well the straw that broke the camels back was when I couldn't compile after adding boost python to the server. That is a deal breaker I need it for NPC scripting. I have also been unable to add a few cool extras I wanted to because the libraries they require don't support MinGW on Windows.

So, I bit the bullet and started switching the client & server ov…

Slacking Off

Sorry folks I have been slacking off since the last release. However I have started work again. Mostly research at this point because I don't know how I want to do the NPC stuff. I'm still thinking about the best way to do it.

The most flexible would be LUA scripts but I'm not sure that would exactly make people want to make NPCs for the game. I could make a GUI app to help make that work but I'm still not sure.

That is probably what I will end up going with though because that method will work for quests and such as well. So build pieces for speaking will get me on the road to adding quests which is coming up the release after this one.

0.6.0 Released

I have finally released 0.6.0. As promised players now have the ability to form guilds add ranks to those guilds & assign permissions to the ranks. I also fixed the security checks related to kicking, inviting, and modifying ranks.

There is no eye candy in this release. It is mostly just a technical update. There are still Allot to be done before this will be a playable game. Some of that is just interface improvements and some is back end functionality that is completely missing at this point.

As with the last release I was able to build for windows, Linux, and FreeBSD. However FreeBSD gives me a seg fault when I try to login to a server. This may have more to do with the state of my system but I don't want to let people think that it is working perfectly only to get a big fat error when they try to test it.

Also Linux is largely untested. I'm pretty sure it should work but I haven't run it for any notable amount of time. Also I haven't tested most of the features.


There's always a try catch.

I added some try catch statements to a few places. One reason for this is to prevent people from causing exceptions on purpose to produce undesirable results.

Each poll of the server is not in a try catch that way if a user sends a packet that somehow causes an exception no other users will be effected. I still plan to add validation to the manager classes but it is impossible for me to think of every single exploit before anyone else thinks of it. So I plan to monitor the exceptions once I have a server up and make fixes based on the exceptions.

After all I can't have one rouge user bringing down the server and causing everyone to get disconnected.

I also added a try catch to the execute command callback. I'm doing some tricky parsing stuff and any failure on the user's part to correctly form a command could cause an exception. So rather than have the game just die I'm spitting out a console message and give the user an invalid/unknown command message.

I don't want in…

Check my Checksum

I added three types of checksum to the message container class. This isn't a big deal really but it makes it easier for people to add anti tampering measures to their versions of the game. It also allows for message corruption protection. Although I don't really see that being an issue in most cases. The generic GetChecksum function currently just calls the GetSimpleChecksum function which sums the characters of the message.

I don't currently have any plans to take this any further but I may if there is demand for it or if I get a cool idea. I don't want to go an implement something unless I know it will be useful.

Also I hate flies and I could sware we have like over 9000 in the house. It's like a plague I have no idea what is going on but it is really annoying.

Story about the story

Last night after hours of unproductive gaming we decided to work on the story a bit. We got some of the story points worked out and added a few new clans. This is a change from what we have been doing. I have been focused on the technical parts of the game & Avery has been focused on trying to figure out how to make a human model.

So the short version of the story is that I didn't really code at all and unless I have a change of heart I don't make any real progress on it today either. And as all of you know I don't code on Sunday so it maybe Monday before anymore progress toward the next release happens.

Guilds are in the house

I took a break after the last release. Mostly because my friend Avery & I were a little burnt out on our normal routine. Also it is good to break things up now and again.

However tonight I hit the ground running and I'm happy to say that the version in the development branch is now able to create guilds. You can also now create a party as a separate step from inviting someone. Some games require this but I made it optional.

I still need to add guild management features and I also just realized that nothing happens when the leader of a guild or party leaves. That should actually cause the guild or party to break and return everyone to guild or party zero. Which of course means no guild or party.

I'm thinking about how I want the ranks and stuff to work I may allow the user to change the bitmask for now. later I will add a nice friendly GUI but I'm not very good at that stuff so I'm not sure if I will add it to this comming release. However I should probably add GUI stu…

0.5.0 Released

I finally got 0.5.0 out the door.

As promised this version sports a party system that allows players to form parties and use party chat. You can also leave & kick people from parties as you would expect. All of the above are done from commands though as there is now scene node interaction menu systems in place yet.

The pieces that are the same for guilds have been implemented as well so the next release should go smoothly for the most part. Although It may still need the same or more amount of time because of the extra stuff I will need to implement to get guilds working correctly.

I have also added a bonus feature. You can now get a list of all players in the world, your current map, your guild, or your party. This is done through the who or list command. They default to world but by adding "map", "guild", or "party" to the end it will modify the default behavior.

I also added some more cross platform fixes to the code base to help build this thing on mo…

party invite working

I finally got the party invite stuff working. The user that sent the invite doesn't get a message telling them yet but it does work and I'm super happy about it. I got so close last night but it wasn't working right and I finally gave up and went to bed.

Which is funny because I think the last fix I did fixed the problems I was having. Oh well I needed sleep anyway.

But in any case I'm happy about this working and I thought it was worth blogging about. I still need to implement leaving parties & give the users some sort of indication of people joining/leaving parties.

0.4.0 Released

Finally, 0.4.0 is ready to go. There is a nice list of improvements as well. As is my custom I slipped a few extras into this release making it the best release yet I hope.

As promised you can now switch between maps using warp scene nodes. There isn't any validation on the server yet but that will be hard to do until I start implementing the database code.

I also have greatly improved the camera. For one I moved the camera movement to the right click which seems to be more standard. Also you can look up and down now. I also added a collision response animator to the camera so it will collide with the floor and ceiling(if inside) which keeps it from going through things. It will automatically near in those cases proving much better camera angles without manual tweaking. That should make it easier to explore the game once we have something to explore.

Also there is a warp command which will allow you to warp to a map based on index. This functionality will be disabled at some point bu…

Working Mini-Map

I finally got the mini-map to work correctly today. It was more work than I thought. This is mostly due to how weird the position stuff works.

There is one gotcha with this though. The map has to start at {0,0,0} otherwise the math will be wrong and fail.

I'm really happy about this I have been working on it for a while and now it finally works. This is sorta like a mini milestone it doesn't add much to the game at this point but still I"m happy about it.

Ok, now to finish the 0.4.0 stuff I have also been working on.

0.4.0 progress

I was able to get the warp command working on the client & server. It allows a player to switch maps. Right now there isn't any validation as with many other features but it does prove that the functionality works. I'm planning on adding some warp locations later. I'm planning on adding the warp locations server side but I would need to stub them.

I don't code on Sunday though so further progress will have to wait until tomorrow.

BSD build

I woke up this morning and decided I would like to try to build on BSD. I had been planning on holding off so I could focus on features but I got lazy and decided to play with BSD.

However I have yet to get this think working the way I want. I keep having all of these build errors with the stuff in ports. It reminds me of using the unstable branch in Gentoo. Except I think it is a little worse than that.

This makes me kind of sad as bsd fans claim it is so great but it seems like it is still behind the curve in terms of packages management. I can't really judge it on the UI because it uses xorg and the standard collection of window managers and such you would use on Linux.

Oh, well I don't have to like it I'm just trying to get a build out for people that do like it. It may grow on me though. I thought Linux was a pain in I started using it. Of course back then the GUI was useless and you had to use command line stuff for everything important which was hard for a newbie.

On a …

Code Style

I published a short code style guide on my website.

It isn't in depth but people tend to stop reading after the first page or so anyway. That should be helpful if anyone wants to contribute to the project. I doubt it at this point but might as well be prepared.

On a side not I added some info about a few of the clans that will be in the game.


I added a mini-map window to the game. It pulls the mini-map image based on an attribute of a map entry in the map configuration file. I thought about auto generating the mini-map from a camera positioned above the map but this would be expensive performance wise. Also some maps probably shouldn't have mini-maps for example a maze. Also I wouldn't want monsters, players and such to render on the mini-map at least not their models. Maybe a red dot or something.

Anyway currently it doesn't track your current position or the position of anything else. So it isn't all that useful but it does give you an overview of the map your on if the mini-map image exists and is in the configuration file.

This isn't really required for 0.4.0 but it is one of those fun extras I throw in because it was fun to develop.