Hey everyone. Sorry for not posting anything in the last week. The main reason is the fact that I have too much work to do and not much time for developing Coop Commander (it is still a secondonary project for me, but it looks quite good at the moment). Instead of doing the same mistakes this week again I will pause the development of Coop Commander until this weekend.
There were 2 main problems last week that kept me from posting any updates or screenshots. I wanted to finish the multiplayer stuff, which worked ok in the beginning (chat, lobby, simple in game messages, no problems here, worked after 2 days of coding), but later everything was screwed. The system was far to simple and there was no way to syncronize everything without rewriting a lot of game code. The other problem was the effect manager. Just adding few effects was no big deal, but finetuning every single effect and finding out each position for each unit where to spawn effects, units, smoke, etc. was a long process.
Last weekend I just finished the effects stuff and next weekend I will hopefully finish all multiplayer issues (the game isn't very syncron right now ^^). It does not really matter because there are still over 1.5 weeks left till Rocket Commander is released. By then Coop Commander should be working stable. Maybe we will also add more missions and more enemy ships.
So what is the problem with all this multiplayer code? I can tell you:
So I wrote a concept of a new network architecture called Half'n'Half Server-Client Model and I implemented some unit tests to try it out. Some new problems did occur I hadn't thought of and testing and fixing all those problems could take some additional time. Since I don't want to be a total jerkoff and tell you how great this new network game architecture is while there is no proof that it does actually work, I will wait until I have implemented a basic version of this Half'n'Half Server-Client Model into Coop Commander and played around with it.
- No Time to implement any complicated network system
- No Engine to use, I've got sockets, thats it.
- Directly sending all game data causes too much bandwidth. The server should be able to handle thousands of users with less than 1mbit.
- RTS game tick based approach too indirect and jerky. Let me explain: Directly implementing a game tick based approach like in RTS games would be a lot of work and while keeping the network bandwidth low, the gameplay would be no fun at all. In RTS games the player can't control anything directly. When he orders a unit to move, the sound may play instantly, but the unit will not move for a couple of 100 ms (usually 1-2 game ticks, which is 200-400ms). While this is perfectly fine for RTS games with a lot of units, in the case of Coop Commander the player only controls 1 unit and directly sees what is going on. This makes this approach unusable.
- Client-side prediction is both too much work and very sucky for laggy situations. It is also not supported by RC and would be quite a lot of work to implement.
- Shooters usually use UDP and send out a lot of data, which makes them require a server for each game in contrast to MMORPGs, RTS or RPGs, which usually only require 1 master server, which either handles all the players directly or let the clients host their own games.
- I'm crazy enough to try something new
The basic idea is to split the network code to the server and the clients. The server manages all important data (live or die, spawning of units, etc.), while the client manages all the complicated and bandwidth-demanding data himself and only sends results to the server. This includes player collisions, doing damage, controlling the ship, etc. The server can still reject messages that make no sense and most important game actions like collecting items, powerups or killing units will not actually happen until the server confirms it.
This architecture targets very bad networks (lag situations above 500ms, up to 1000-2000ms) while making the game still "enjoyable" enough for the player and it minimizes the bandwidth for all players and the server to an absolute minimum (around max. 100 bytes/sec, that's it).
For now, just enjoy the screenshots ^^ There will be no beta because the game itself is online-only and will update itself as long as I have fun developing it. You should be able to download it from www.RocketCommander.com around 9. March 2006.
|The calm before the storm:|
The multiplayer game screen with 2 players:
The is a Carrier on the left side and there a lot of
fire balls in the scene comming from the Bombers on
the right side. The other player TestPC is also visible.
A little deeper in the first mission a lot of Mine Layers
put these mine field into place and the Carrier
spawns new units all the time. Not much chance for
the Lizard (my ship) on its own ^^
This is a very early screen of Coop Commander. The modeler is complaining that I show it on my blog because most of the textures are still missing (all the ships in the backgroud ^^). But I think it looks promising. The Effect system and all basic units are implemented and some of the game logic is working too. Basically it is just a bunch of unit tests right now, not a full game.
Today I started with the Multiplayer coding. I hope I can finish the Game Server by tomorrow. Usually this takes a couple of weeks (chat lobby, player management, game lobby, game server), but I will try to minimize the features and do it as quickly as possible (I still want Coop Commander to be finished in roufly 1 week). By the end of the week the game should be playable. Next week we plan some final balancing and finetuning of the effects and units.
The game will be released together with Rocket Commander in 2-3 weeks, stay tuned!
Polynapping: Little note to self: I worked way to much the last 2 days and missed a couple of naps and then was too excited to sleep sometimes. Then last night I overslept for 3 hours and can't even remember turning off the alarm clock. I guess I have to pay more attention keeping my polynapping schedule. Also working too much, like I do at the moment, isn't that good for polynapping, the body needs some rest. Relaxing in 1-2 phases is a good thing. I will report back next week how I'm doing with my Polynapping.
|Sneak preview of Coop Commander:|
Last week I've finished up the Rocket Commander Game Programming Video Tutorials. They will be released on the german Coding4Fun Site together with the Launch of Rocket Commander. I guess that will be at the end of this month or in the beginning of march. Anyway, for the last Tutorial I made a cool Mod (Game Modification) called Flower Commander. You can see a screenshot of that game in action on the left side. It took less than 1 day of work. The gameplay is somehow similar to the original game. However the graphics are very different.
This week is the last one for my interns (little shoutout to Christoph Rienäcker and Enrico Cieslik) and we thought we could do something cool. My current projects are mostly finished. For example today I finished the 3ds max exporter and importer for my engine, now I hope I don't have to do c++ for a long time. Maybe next week I can teleport myself back to reality with some boo coding and finishing my Visual Studio Boo Language Extension ...
Since I have so much time every day (22 hours thanks to polynapping), it is time to do something. We plan to make another Mod called Coop Commander and it will be finished by the end of this week. Basically it is a multiplayer cooperative shoot'n'up with rpg elements. Kinda Diablo2 in Space ^^ I will post some screenshots from time to time. It uses the basic engine of Rocket Commander and will be freely available like the original game. This are the basic game principles: Similar to Rocket Commander you fly through the space and try to accomplish each mission. There are 6 different kind of enemy units in the game and you can choose from 3 units, which all get stronger over the time and have completly different abilities (rpg elements). The game will be balanced for up to 3-4 players. You can also play it with just 2 players, but it will be hard. Singleplayer is considered to be impossible, you have to meet with other players to be able to fight off all enemy unit types (each unit class has it weaknesses).
Obviously Coop Commander will not be able to compete with any AAA title, but we would like to see if this idea works out and maybe it is a lot of fun to play with your friends some challenging missions. Additional elements, more beta testing, more levels and enemies can be added later. I like the idea of finishing the game in 1 week, but it will be a lot of work (there is no effect system, no unit system and no multiplayer in Rocket Commander and that need to be added).
Polynapping, the second week: Nothing special to report. The last couple of days I slept regulary every 4 hours for 20-30 minutes (never more) and I'm very awake after few minutes when staying up. Going to bed has been easier too, but I still can't go to sleep immediatly (takes up to 5-10 minutes). Another strange thing is the fact I can't remember any dreams, no lucid dreams, no day dreams, nothing. Sometimes I feel like I have slept for several hours and then I look on the clock and it was just 25 minutes. I'm very awake at day and night and neither myself nor anyone else seem to notice anything different about me except the fact that I have go to sleep every 4 hours. But that is only annoying at work (sleeping there is hard because of noise, driving home and back is a pain in the ass).
Thanks for all the emails and concerns other people have with this. I'm not telling anyone to try this for yourself and I was not expecting for this to work. I just was curious and I think it is a very cool alternative sleeping pattern, especially if you are in need of time or want to experiment around. Maybe I will keep doing this for a couple of months and then switch to a biphasic sleep pattern and go back to polynapping from time to time. I'm not going to post much more about polynapping because I think most of the blogs I've posted last week cover all the interessting stuff and I agree with most of it.
|Rocket Commander in action:|
Flower Commander main menu:
Flower Commander in action:
|As announced in my last post I've updated NormalMapCompressor to Managed DirectX for .NET 2.0 with help of the February 2006 DirectX SDK.
You can download the whole thing by clicking on the image on the right or with help of these 2 links:
Couple of notes: The GraphicBuffer (formally GraphicStream or just accessing data with .Lock methods directly) is really strange. Writing does always work, but when reading data all kinds of things have to be checked by yourself. All the data in GraphicBuffer (Data sizes, Elements, Data lengths, etc.) are always 0, so they don't help you at all. Doing foreach is possible, but doesn't work either. Direcly accessing with help of the indexer works fine (but you have to copy all data over to a temp. variable and then copy it back). I found that out the hard way by trying everything out until it worked finally. Here is some code:
int numOfVertices = someMesh.VertexCount;
GraphicsBuffer<TangentVertex> verts =
for (int i = 0; i < numOfVertices; i++)
// Get vertex data
TangentVertex vert = verts[i];
// Change texture coordinates
vert.u = (float)(Math.Atan2(
-vert.pos.X, vert.pos.Z) / Math.PI);
vert.v = 0.8f *
(float)(0.5f - vert.pos.Y / 2.0f);
// Set changed vertex
verts[i] = vert;
} // foreach (vert)
Same problems for converting the texture, but I used a totally different approach there (converting everything to a bitmap stream and than creating a new texture with that). Other than that the initial conversion took less than a hour, couple of renames and thats it.
I don't get the point why VS 2005 puts the Microsoft.DirectX.dll (MDX 2.0) into the debug and release directories. First I thought: "Cool, maybe this works now even with older DirectX versions". But after testing on my brothers computer nothing worked except when DirectX Feb2006 was installed. I adjusted the installer to that.
So if you can live without the missing MDX 2.0 help (for example if you are already experienced enough in MDX 1.1), it is really an option with DX Feb2006. All missing methods from the last betas were added and most problems are resolved. I think it looks pretty good and I will use MDX 2.0 directly in future projects.
As many of you propably already know this Friday (10. February) the DirectX 9 SDK February 2006 came out. It includes many updates of the DirectX 10 SDK for Windows Vista (you should use the Vista Feb 2006 CTP to use DirectX 10). But since DirectX 10 is c++ only and there is no hardware available to test (only software rasterizers) I'm not testing all that stuff out yet. But I can tell you the Help and the samples are really nice (they are prerendered into videos for seeing them without having to get Vista).
Another nice update in the SDK are the Managed DirectX for .NET 2.0 samples, most .NET 1.1 samples are now converted and it really makes sense to start using MDX 2.0. The only VERY ANNOYING fact is still the missing help for MDX 2.0 and the Tutorials are not converted either. What the fuck? Seems like we have to find out everything with the Object Brower in Visual Studio again. Oh my god, does MS have no resources to get this together? This is the third MDX 2.0 beta already.
I told you last time in my post about the December 2005 DirectX 9 SDK that I couldn't update the NormalMapCompressor tool to MDX 2.0. The main issue was the missing Texture Save method, but I had some other problems too. A quick look into the classes and methods of the new SDK indicates that most of this stuff has been resolved (many thanks to Tom Miller and Co. for implementing that).
In my next polynapping phase I will try to convert the NormalMapCompressor to MDX 2.0 and post the results here if that works.
As a sidenote: Polynapping works fine for me. I overslept again on friday a bit. I was trying to sleep at work, but it was too loud and when I finally was sleeping I wasn't waking up to my alarm clock and noone wake me up ^^. Yesterday I was a little bit more tired than the days before, but today I feel better again. I can also fall asleep more quickly now. Strange thing is I remember nothing after sleeping and it feels much longer than 30 minutes when sleeping just 30 minutes (or less if it takes some minutes to fall asleep). Maybe the REM sleep is still deprived and will kick in tomorrow (then 1 week has passed).
Yesterday night it was somehow hard to stay awake, but I kept my schedule. However, later that day I overslept 3 hours and thought I had messed everything up. But I was able to keep all naps after that, getting to sleep goes easier day by day. Strange thing is that I get really tired after staying awake 4 hours and when sleeping more than 20-25 minutes I often wake up by myself. It seems to be true to be more alert after sleeping, but I think I don't dream anything right now (no REM?), can't remember anything and it is still early (could take 7-10 days till polynapping fully kicks in). After 3 hours awake I get a little bit weaker and after 3.5-4 hours I'm getting tired. But I can't sleep right away, I never could sleep on command. But maybe this effect increases, which would be good. Wasting 10-20 minutes in bed waiting to go into sleep really sucks if it has to be done 6 times a day (especially if there is only 10 minutes left to sleep then).
Today nothing special happend, I took all scheduled naps and are feeling good. I overcome my cold and I think my appointment with my dentist yesterday went fine too. She is trying out soft lasers and it seems to work very well (unlike all those root canal operations).
The time I've got each day is amazing, it feels like being awake around the clock. I think I'm also eating more healthy and doing more things I have no time for. Maybe I will do work at daytime and relax, play games, etc. at nighttime. Feels like a weekend every day, hehe.
I hope there aren't bad side effects to this polynapping thing, but I think doing it for a couple of months should be fine (lot of ppl have done that already).
Alrighty, this is my thrid day awake with only a couple of successful naps since I started this on monday. My main problem is getting to sleep. Even after 3 days of almost no sleep at all. I slept only 3 times in my 11 naps, yesterday it was more like not sleeping for a day (which is quite usual for me from time to time). But today it really feels like a very long day. This isn't negative, I have plenty of time and after 2 successful naps this night I was fit enough to code a little, then after that I went to work and did some stuff there too (wouldn't say I'm less effective, coding went fine). Overall I would say everything goes well, at least I didn't oversleep yet (but I have taken naps a bit longer than 20 minutes, maybe 40-50 minutes one time, I will reduce that later when I can get to sleep fast enough).
But again, my problem is getting to sleep and also I had a cold (and still have) before I started polynapping and I read on some other blogs that people aborted their polyphasic sleep pattern just because of that. I drink a lot of water as suggested by the folks at PolyWiki and the Polyphasic sleep forum and didn't eat heavy food or drink coffee or any alcohol. Instead I'm eating a lot of fruits, vetegables, milk, etc. (not my main food usually ^^). I also bought some medicine against my cold.
Getting up is also no big problem, I'm sometimes very tired and want to stay in bed, especially if I didn't got any sleep. But sleeping would kill this whole schedule and I want to see if this works out or not.
I hope I see some more sleep to the end of this week and maybe I get some REM sleep again and some lucid dreams maybe?
Uhh, it is 4 o'clock, time for a nap. Lets hope I get some sleep this time.
|I was listening to Mondays and checking out the toys presented by Richard. This toy (sleep phase alarm clock) was looking very interessting, but I usually don't wake up by my alarm clock anyway. But I continued to read comments and sites reporting if this works and after I while I found out about some crazy people using Polynapping to only sleep 2 hours per day. This sounds really interessting, doesn't it?
So whats this about? As you can see on the right side instead of sleeping in one large block (7-8 hours), thats called monophasic sleep, polynappers only sleep every 4 hours for 20-30 minutes. This is called polyphasic sleep. The theory is basically that the body doesn't get any REM (rapid eye movement) sleep for the first week, which is important for dreaming and generally for refreshing the body. Then the human body adjusts to this schedule and instead of the normal sleep phases (4-5 times going through the sleep stages 1-5 including NREM and REM sleeping in 90 minute intervals, check out this link about that) the Stage 4 NREM and REM sleep phases will be started very soon after beginning to nap.
This technique is used by boat racers, astronauts in crises, by the military (training?) and some reasearchers and bloggers (a lot of self-testers like me). Most people attempting to try this out fail in the first days and only very few get to the first 2 weeks the body might need to adjust to the new schedule. For example the character Kramer in Seinfeld tried this in the Episode "The Friar's Club" and failed "on" his girlfriend ^^. As I'm writing this I'm already awake for 2 days and have 4 polynaps behind me (but I didn't really sleep in any of them except the last one a bit), lets see how long I can take this. I don't expect anything special out of this, maybe it sucks bad time and I will feel tired all the time even after the first 14 days. Maybe this is a cool technique for a while to be more productive and maybe I suck and won't even keep up with the schedule.
I will try to post every couple of days how this is going. I just finished my last project (video tutorials for Rocket Commander, they will come out in a month or so when microsoft starts their german coding4fun website) and got a little free time right now. I also wanted to finish the Boo Language Plugin for Visual Studio, which I started in the beginning of this year (but I never continued to work on it). There are also 1 million other things on my TODO list, so I should not get bored.
The main problem I have right now is simply getting some sleep. I go to bed at the scheduled times, but I couldn't really sleep because I'm not tired most of the time (even when awake for more than 30 hours), at least not tired enough to start sleeping right away. I bet this will change this night and I will get more tired from nap to nap and the hard part will become getting up again. I only have one simple alarm clock, I hope it doesn't fail on me (I should program something else to ring too).
Time to get some coding done. I will report in a couple of days how this works out ... greets fly out to all fellow polynappers and thanks for all your blogs and reports on the net, that was a lot of interessting text to read last weekend.
Btw: dyn.ee is down for 2 days right now (thats why this site might have been unreachable yesterday), which is really annoying because I have to route the IPs myself now. I hope they work again very soon, I don't want to switch to another service.
Here are a couple of more links for Polynapping: