Crescent Dawn Online Alpha 2 - new pics! (5/14/06)

Latest update - 05/14/2006:

Continuation of old thread:

For those who don’t know/missed it, Doogs and I have been working on an online rpg (I hesitate to call it a mmorpg when at this stage it really can only support 8 players) called Crescent Dawn Online. It is an extension of our first game Crescent Dawn, which was put on hold. How crazy is that, putting a single player game on hold because it was too hard to work on; so that we can work on a multiplayer game? We must have been insane. Fortunately for all of you, we still are insane and we haven’t given up yet!

Progress has been progressing progressively for the past few months. Basically, we have gone through a few spurts where a lot gets done, and a few spurts where not very much gets done. This version is going to have very few graphical enhancements, several stability enhancements, and a some new features. The majority of the work though has been enhancements to existing features. The first month of development really focused on the backend and making connections more stable. We have switched from the fast-but-unreliable udp sockets to the more standard slower-but-reliable tcp sockets; for those who care about such things. I am hoping this solves the connection problems many players had during the first test. I am interested to find out if that is the case or not.

The plan is to release it sometime in late april or early may, which would be sometime next week or the week after. Instead of only having the server open for a day, I will try and have it open for a couple days; maybe longer. If I have issues again like I did last time, I may set up a specific time of day that the server will be open, and keep opening it up at the same time each dau. There are a few features that are incomplete that I would like to finish before the release, and I’m not sure how long they will take. Also, I want to spend more than a day packaging it up for release, as last time the packaging stage was a lot more difficult than I had anticipated.

Short list of updates:

  • Connection improvements
  • Account/character creation
  • Ability to completely remap keys, including joystick support
  • Minor communication bugfixes
  • Some interface updates
  • A few more emotes
  • Basic objects/inventory
  • Click-to-walk system in addition to direct movement
  • Completely new mini-world

Here are a few screenshots showing off a few of the new things:

Changing keys

About to walk:

Got there:

What’s in this box on the ground?

Aha, it was a shovel!

As I said, graphics haven’t been enhanced at all since the last version, I haven’t even had much time to play with the fancy new shaders. Functionality is key.

If you own a mac please email me, pm me, or look for me on aim:saluk64007 I need to try and port the game to Mac’s, otherwise, once again, no one with a Mac will be able to play. And if you are a Mac user, you wouldn’t want that to happen would you?

wow, it looks like you’ve made a lot of progress overcming the limits of the GE. If the Multiplayer works, then it’s certainly something that hasn’t been done, and has great potential to further the GE. This could be integrated into 2.42 maybe, you could send it along to the devs perhaps. Anyways, this is certainly a significant step forward for the GE. Did I stress that this is good for the GE? Well it certainly is.

Looking sweet :slight_smile:

Nice to see you guys continuing with this, got any general hints for an underling trying to do multiplay in GE?

It’s looking great keep up the good work.

Is your server multi-threaded? All of the TCP servers I’ve written are multithreaded and spawn a new thread/socket for each client. Python makes multi-threading easy, but is there a better way to go about this? :slight_smile:

I can tell you guys have put a lot of work into this.

The server is written in Twisted which is asyncronous - not threaded.

The basic arcitecture is that Blender is treated as a dumb client - I use it for the bare minimum nececary to make things work. The scripts for the gui and animations etc are in blender, but the scripts for clients and servers and events are all external. I have a class that handles remote objects - it has properties and methods related to acting on the client side as well as acting on the server side.

The actual networking part is pretty dumb, it basically just reads in messages and sends messages out. Depending on what information each message is, it passes that on to the proper class, whether that means telling the server something a client requested, or telling a client something the server said.

It’s not a lot of code, and it’s well written at that, but it’s still a bit of a hall of mirrors. Sometimes it’s hard to tell what is happening where, because really, it happens all over the place :slight_smile:

But, most of that was all working in the last test. At this stage I don’t even think about networking at all. I think in terms of messages, doing the brunt of the work for any action on the server, and having the client make sure the correct animations and things are being displayed to blender.

I still haven’t written any prediction code, which would make for a smoother experience, mostly because it’s not that bad as it is, and prediction code is where I had trouble in the past. I do have a plan ready for prediction, but it’s not such a big deal at this stage to put it in. Maybe in alpha 3 :slight_smile:

At the begining I tried to keep the code flexibile enough that we could move to another engine if blender didn’t work out. That’s still a possibility, but there is a lot of code in blender now for the gui etc that would make it a chore to port. We’re still evaluating that option though, mostly because of performance issues.

One of the issues is that the inter process communication system (which is needed because it is difficult to have good socket code within blender itself) is a bit of a performance hog, and my attempts to rewrite it using different systems have been dismal at best. I still want to look into replacing that. If we could have an extra thread in blender that runs python scripts, maybe as an option on the python controller, then it would be a much easier task.

Looks good. Please keep up the good work. I don’t know how reliable of a mac port I could do. Do I just need to export a runtime, or what?

Actually it’s quite a bit more complicated than that, but that’s the main step. As I don’t have experience with mac’s, I’m not totally sure what I would need to do. I use a lot of external python, but the two main things I need are python and pygame. (I have to have python itself as I run part of it in a seperate process from blender). So i know there is a program called py2app that might work, but I’m not sure how to call some of the things. Like, on windows I use .bat files, on linux I use sh files, I assume it’s similar on mac, but I know I cant just put the linux version up with a mac executable.

But that would be a start, you would make the executable, and we get the python dependancies installed, and then we figure out how to go from there removing python and making it work without it.

But there is a program called vnc, I don’t know if you’ve used it before, but it would let me watch what you are doing on the mac, or even control it too. It’s what Doogs and I use whenever I need to do some serious testing, or when I need to watch him do art etc. That would be the best way. If you have some chat program we could use that, or we can use irc. Let me know in a pm or email ([email protected]) if you’re still interested

This is a nice treat, I can’t wait to test it again. Although I didn’t have too much trouble connecting, I had a slow connection, I hope this has been fixed, I look forward to your uupdates/releases.

BTW: If you need any help, just send me a pm :smiley:

Sincere thanks for sharing all that with us dude, I’m beginning to appreciate the amount of work you must have put in to get this far!

Best of luck with the next online test, heres hoping you dont fry your server :slight_smile:

good luck with this guys!:smiley: cant wait to play it again myself…

WOW! Saluk that’s a few weeks ago I saw Cresent Dawn!
I have not had the chance to play it because the version I downloaded didn’t work because of the server that was down!
Bring that ALPHA soon!

Work on this is still coming along, I can’t say for sure when I’m going to actually run the test at this point, because there is still so much to do! Some of the big features have been implemented, but now the bugs seem to have compounded by incredible magnitudes. It may be a bit longer, but whenever it gets finished, you will be amazed :slight_smile:

It probably will still end up being more of a chatroom than a game, but it will be a chatroom with quite a bit of stuff to do.

I’ve realized that even if I got someone to help me with the mac port, that’s still one more platform that I have to bug test, and I just don’t think I’m ready to fully support a third platform yet. I really can’t do it until I have a mac I can test on.

So another 2 weeks or more and I’ll update again. No screenshots, because there isn’t really anything worth showing yet. Stay tuned…

tsk tsk tsk

it’s lookin good, guys!



In the last few days of busy, hard work, I have squashed numerous bugs and Doogs has added a few more things and suddenly the game feels much more like a game than it did before. It’s incredible how much little details can add up to make a better experience. A week ago, I really wasn’t sure how much we would be able to get done, half a week ago the bugs felt like they were mounting and ready to bowl me over, and a few hours before my last update it seemed like the second alpha would be little more than a slightly updated alpha 1 with a few usability features.

But that all changed when things started gelling together. I went through a marathon bug fixing session and found deep in the bowels of the ugly networking code something that was coded very wrong. I’m surprised it was even working the way it was coded :slight_smile: I spent a little bit of time perfecting a few of the features that were half implemented. Doogs made a bunch of cool things, including sound and music. Crescent Dawn Online went from the impressive coding experiment to an exciting game project within just a couple of days. I encourage anyone else working on something to perservere, even if at some points it feels as if the game is terrible, boring, and will never get anywhere. Sometimes one tweak or addition can make all the difference.

Here’s hoping the game is as low on bugs as I feel it is, and that when everyone starts connecting like mad my server doesn’t come crashing to a halt :slight_smile: I leave you with some older screenshots:

First image of characters with different heads:

First shot of untextured houses in the game and various dynamically created objects (I.E, I was playing the game, and decided to build a rock path leading to my house, and put the welcome sign and mailbox there as well):

We are basically just in a polish/tweak/package stage right now, so alpha 2 will be available very soon. I will release a few more screenshots each day leading up to the downloadable client!

Incredible work, guys, simply incredible.

Amazing how much Crescent Dawn has changed since it began several years ago… it’s not even the same kind of game anymore.

wow, if this works it will be a real inspiration to all BGE users. Looks great. Reading a few “network game” threads, I thought it was impossible to have an mmog-type blender game - how, for instance, do the physics work? Does the server handle all the physics?

Really nice guys.

Great work.

Thanks for the update, nice screens. I simply cannot wait until you post a demo :smiley:

heeh saluk why did you post old pics :wink: :wink:

tsk tsk tsk

are you trying to surprise them?


Some more teasers :stuck_out_tongue: