-->
Recent Projects:
Current Project:

Exceptional Journals (in no order): [Eliwood] [Steve Healy] [Ravuya] [Mark the Artist] [Scet] [Ysaneya] [Mayan Obsidian]
My Personal Website
 Oops! |
Posted - 3/30/2006 12:02:42 AM | Phew, that was close. I almost got caught playing with myself* last night.

(Just realized what people might think if the image didn't load up!)
* Playing Skirmish Online, that is. I don't ever want the above text to be used against me in court. 
| |
 And so it begins! |
Posted - 3/26/2006 11:41:30 PM | Video Card
Ordered a nice nVidia GeForce 6600GT today. Should beat the pants off my current card, even though it's not really that high-end by today's standards. I'm intentionally offering no further details because I don't want to hear "you got ripped off" or the likes. Us Canadians are used to it. :P
Skirmish Online
Decided to call v0.04 finished. I think that the network rewrite and all of the other big changes planned warrant their own version. Thus, we are now on v0.05 Alpha. :)
I haven't actually started the rewrite yet, it may be worth mentioning. Today I focused on figuring out ways to improve security in the game.
I found out that Toxic Hippo wrote the beginnings of a 'bot' to play Skirmish Online, via a Python script. The idea is cool, but I'm 100% against the whole hacking thing, even if it's a non-malicious attempt. He explained how just using a packet sniffer he was able to figure out some of my packet types and get a dummy player to connect and chat in the game. Uh oh. If it's that easy, then it's time to step security up a notch. >:) Toxic Hippo recommended somesort of simple encryption to keep out the quick-hack folks. A wonderful idea. I think that packet encryption combined with more server-side authority will be the ideal way to keep the game out of the grasp of hackers and not make it a complete chore to code. :)
Spent the last 3 hours or so implementing an encryption library I found. The implementation itself was simple, but the library had enough 'quirks' that it made the process quite painful. The game runs exactly the same now, but the packets are encrypted upon sending, and decrypted upon arrival. Eventually it'll be more secure, whereas the client needs to receive a cipher key from the server or somesuch. This was just a quick test to see whether the library could do it or not.
Now the actual rewrite of the network code begins. If all goes as planned I should be able to host at least 20 players without a problem. My limit so far has been about 7 or 8, due to the inefficiency in my code and some bugs that need squashing. To have that bug-free release is still my dream. :)
Online games are love-hate relationships. I loathe the painful parts of the coding, but get indescribable joy from watching people log-in and gun down eachother.
Aaaah, I love this job. :P
| |
 A blessing in disguise.. |
Posted - 3/25/2006 11:42:00 PM | Phew, that was a good game of Skirmish Online. Special thanks go out to our brave and bug-hardy testers tonight: (in no order)
Draffurd, Mushu*, Dillon, Kenny, Alex, Eliwood, and Toxic Hippo. Forgive me if I listed anyone twice or not at all, as people were using some rather whimsical aliases ingame. :)
* And special special thanks to Mushu for inviting more than half of the night's players. :P
And of course what's a test without a screenshot hurled at you, dear readers?

How was the test itself, you ask?
Oh, it was terrible. List index errors popping up for people, access violations crashing people's clients, invisible players sometimes, respawn bugs, and general pandemonium. All in all a disaster. Still, everyone said that they enjoyed themselves. And that's awesome. :D
What's even more awesome is that I've realized through this shroud of disaster a way for me to vastly optimize my network routines. This should cut back the number of packets going in and out exponentially. Not only that, but it'll give me even higher resolution on player data. Fantastic. I've been giddy about this since the testing ended, and I'm really excited about implementing it. Sure it requires a rewrite of the whole network server/client code, but it's doubtlessly and unhesitantly worth it.
For a nice timeline-esquè effect, here's how the networking methods of my online games have built up:
First, there was the initial attempt. Absolutely abysmal now that I look on it. For every action performed (firing, moving, dieing, chatting, etc) a packet was sent. I did the math, and the equation was rougly Players * (Players-1) * 2 for movement packets alone, per second. For 10 players that's 180 packets per freakin' second! :-O
Second, there's the current method. It improves things a lot, but still isn't making the cut. Several times per second (usually 3) movement data is send out about all of the players inside one packet. This saves heaps of packets, so I'm not sending one packet about each player's action to everyone. However, although I'm sending a list of players that have performed this action fit into one packet-a-piece, this still adds up quickly. The rough equation for packets send per second is Players * 15. Crud. When the playercount goes up it ends up being only marginally better than the old method. I dubbed this the "postcard method" because we send out a postcard to the client/server every single time some action happens.
Now, there's the new method. I really like it, even though I'm sure it's a "duh" thing for most of the dwellers of the Multiplayer and Network Programming area of GD.NET. I like to call it the "newspaper" method. Instead of sending data about every single action when it happens, we just record events that have happened since the last packet, and then 3-4 times per second we bundle all of that 'news' into one packet and send it off. So it's like a newspaper of all of the things that have happened since 250ms-300ms ago. It will obviously result in a bit of a delay in some actions, but I'm confident in my ability to make the game compensate. This allows the client to have a constant in/out packet rate of 3-4 per second. The server will have an in/out packet rate of (3-4) * Players. Sure the packets will be a little bit bigger, but I think that even a 56k modem can handle a hundred bytes or so.
Aye, that was quite the nice ramble. I doubt anyone got much from that, but I hope that it wasn't all for naught. ;)
So the game plan is to put the rest of v0.04 on ice and rewrite the network code for Skirmish Online. This will likely take a little while, and require painful testing. Now that I have a few more GD.NET folks on my MSN -- with no escape in sight -- I'll be sure to poke them now and then for help with testing. >:)
(Oh, and 50 points to Ravuya on his nifty GamesDB project. Go bug him for an account. :))
| |
 Quasi-Big Test |
Posted - 3/23/2006 10:48:54 PM | Yay, finally a test of mediocre proportions! Sure 6 players isn' really a legendary number, but it felt good to have some fresh meat running around the map to gun down. :)
On the up-side, we had a lot of fun and uncovered 4 bugs. It disappoints me that we had bugs during the testing, but it keeps on reinforcing my goal of having a public test that is completely bug-free. So far my screenshots always show dialog of players mentioning bugs. Doh. :P

(Everyone is your enemy in the Free-For-All mode!)

(The joys of bossing your testers around to test bugs :P)
So far I've gone through the code and done the 'First Fix' to all of the bugs that should repair them in theory. However, few bugs are fixed the first time around in an online game. Things just seem to have a way of, ah, breaking. :)
So the plan is on Saturday evening (EST) to have another test to see if things are fixed up. Everyone is invited, of course. Poke me Saturday on MSN (hopedagger(at)gmail(dot)com) and I should have a time figured out by then, and I'll fix you up with a copy of the latest client.
Have a good night, fellow developers! :)
| |
| Wednesday, March 22, 2006 |
 Bug fixes have never felt so good. |
Posted - 3/22/2006 11:11:22 PM | Skirmish Online
Today marks the day that two of the big bugs that have plagued me throughout the majority of development -- you know, those annoying vague ones that leave you scratching your head wondering how you'll ever solve them -- have been fixed. While it's not a giant step towards v0.04's completion, it both makes the game more stable, and makes me feel infinitely more relieved. I can sleep easy tonight, that's for sure. :)
Bug 1: The player's velocity is governed by two variables, an X velocity and a Y velocity. Rather simple, but since I checked for each velocity to be within a range seperately, it was possible to move diagonally faster than horizontally or vertically. That is, if the max X/Y velocity is, say, 10, then you could move horizontally (10,0), or diagonally (10,10). When you do the math you see that diagonally is considerably faster! This was solved just a couple of days after our unit on Vectors began in my Discrete Math/Geometry course. I realized, "Duh! This is a vector! I should judge overall speed by magnitude! Doh!".
Bug 2: This was the killer, which I actually just recently posted in the Math forum about. Essentially, my frame-independant motion code was fudged. One of my testers who ran the game at about 25FPS (rather than the ideal 60FPS) has been able to move faster than everyone else since nearly the beginning. It's been quite annoying as he was able to defeat all of us with ease. Now I update the game 60 times per second irregardless of the framerate. For example, at 60FPS I update logic, then draw. For 30FPS I'd update logic twice, then draw. This way the logic rate stays consistant with everyone else's.
Sure the fixes sound simple now that I've already implemented them, but darnit I know that the rest of you developers can empathize. :)
Next up on the Roadmap is Tools. Tools are items like grenades, mines, melee weapons, and the like. Explosions are definitely an area I'm going to have fun with!
| |
 Alive! |
Posted - 3/21/2006 9:39:19 PM | Hey everyone. Yes, I'm still here. Stop throwing popcorn. :-/
After about 2 weeks of gamedev hiatus I've decided to slide back into the picture. It was a nice period of gaming, working, and even a day of paintballing, but there's nothing quite like grabbing a cup of beverage, sliding into a warm chair, and cuddling up with some code to debug. :)
Skirmish Online
On that note, Skirmish Online is back under work. I narrowly avoided Spontanteous Rewrite Urge Syndrome -- commonly known as SRUS -- and managed to quell a few bugs to retain my sanity. Shotguns now fire in the proper direction remotely, as they previously were veering way off to the right of the player due to some bad looping with the multiple projectiles on my behalf. Now you can walk up to someone and peg them with 8 shotgun shells in the face without worry!
I also believe I finally have overkill working, as no testers are reporting coprses veering off in the wrong direction anymore. We had a number of interesting cases prior to the fix where players would be killed, and then their corpse would mercilessly lunge at the killer. :D
I'm now sending the player's health remotely to everyone else so that all players can see eachother's current health. This was mainly for debugging so I could check how many local hits really were registering to gauge the effectiveness of my movement prediction, but I might leave it so that teammates can see eachother's health perhaps.
Also, kudos to Alex who has created SO's 3rd map. :)
Era Busters - Contest Entry
Our TINS 2006 contest entry, Era Busters, was sadly never finished on time. Me and Draffurd decided we'd rewrite it without the hackish nature that TINS encouraged (probably with BlitzMax to save time). Not sure when we'll get the time to do this, but it'll come eventually. Virtually all of the artwork is done already. :)
Name That Movie!
10 points to whoever can name what movie the dialog below is from. (No Draffurd, you can't answer! :P)

(Yeah, I know that's not what happens in the movie :P)
| |
 Cooooode! |
Posted - 3/4/2006 10:45:34 PM | Ugh, this contest is going both bad and well so far. I'll go over good and bad parts in a chronological manner:
Good: I entered the contest.
Bad: I entered the contest.
Good: I had a great idea that fit all requirements.
Bad: My idea was no good because it was definitely over-ambitious.
Good: Me and Draffurd (the artist-man) came up with an even cooler idea that should be doable by the deadline.
Bad: My initial placeholder-programmer-art wasn't very good motivation. :)
Good: Draffurd went absolutely nuts with art and we have a good portion done already. (Thanks Draff!)
Named the game 'Era Busters'. Basically you go through time via your Time Train and collect codes that will eventually allow you to time travel back to your own time period. The idea is that you have to battle your way through 4 time eras (Stone Age, 1800's, Modern, and Future) to complete the game. Along the way you can lure enemies onto certain tiles that will let you use their traits (weapon, magic, armour, whatever) in later levels. Sounds weird? Good. It'll be cool. ;)
I'm totally toasted on coding for tonight, and the contest is halfway through. I'm definitely not halfway done the game, hehe. Tomorrow night will be very long. Arg.
Anyways, here's a little image of me tossing a spear at an enemy and knocking him back whilst he flashes in white damage-ness.

The map tiles are programmer art, yes. :P)
| |
 Off we go! |
Posted - 3/4/2006 1:31:04 AM | TINS 2006 Entry
Alright. Me and Draffurd have decided our gameplan for our entry, and I'm liking it very much. I wrote a plan on my log on TINS, but you can safely disregard that one, it's been scrapped.
Will I share said idea with you? Certainly not. :P
According to my calculations I'll have about 14 hours of development time over the next two days to write the entire game. At least the code. Draffurd is going to be going bananas on graphics and map creation. It'll be intense, no doubt. If we don't finish on time, we already plan to continue and complete the game irregardless.
No amusing screenshots or anything else of interest tonight. Things will pick up, though. They always do. :)
| |
 I'm seriously out of creative subject titles. |
Posted - 3/2/2006 11:40:47 PM | TINS 2006
Eeee! Just 7.5 hours to go until TINS starts. Then the 72-hour clock begins! Let's run over the checklist again:
Game Shell code (Allegro init, main loop, etc) -> Check!
Fiendish plans to skip 2 hours sleep all 3 days -> Check!
Refridgerator full of refreshments -> Check!
Potato chips -> Oops. Still need to grab those.
Phone unplugged -> Check!
MSN shortcuts removed -> Check!
Filled out checklist -> Check!
Things are looking pretty solid. :)
Cannon 'Game'!
Today I was charged with the honourable duty of writing a small 'game' for my CS class to show them some simple trig/physics and double buffering. It's nothing fancy, but hopefully they'll find it informative. It's written in Java, and I'd like the opinions of any resident pros on how decent my code is. ;)
The JAR'd Game
The sourecode for doublebufferd and non
(Grade 11 level, BTW)
Fame and Fortune for Magma Duel!
Cool! Looks like Magma Duel got a bit of coverage outside of GD.NET: DemoNews.com entry. Makes me want to finish that online play or something. ;)
| |
 untitled (that's right -- I *went* there!) |
Posted - 3/1/2006 11:44:40 PM | U of Waterloo Computer Science Contest
First of all, I got whomped on this contest. These were really tough questions that my teacher agreed where mid-university-level stuff. Irregardless, I got 2 out of 5 questions; which was the best score in the school. I doubt I'll make it to the provincials, but oh well. I tried, had a moderate amount of fun, and that's what counts. :)
TINS 2006
Here I was, looking for a decent excuse to add to my game portfolio, and then I came across it. And I've got to say, I'm pretty excited! :)
Basically, the idea of TINS is to write a game in 72-hours. One weekend. At the last minute before the contest starts they'll release a few randomly-generated details about features the game needs to include, to ensure nobody uses pre-made games. The only restriction is that you must use the Allegro library (C/C++). Which is fine by me, since I have plenty of experience with it. I encourage anybody else with C/C++ experience to take a stab at this and see what they can assemble in 72 hours!
Might be worth mentioning that I'm working on all three days of the contest, but I won't let something like that deter me. :P
Star of Shadows Rewrite
I'm thinking I'll be rewriting SoS in either Java or C#. I think that the strong OOPness of either language would be very beneficial towards the structure of a console-styled RPG. Anyone have any preferences or thoughts to share on the matter?
The rewrite will get going once I have v0.04 of Skirmish out the door.
Skirmish Online
I think I fixed overkill -- a feature whereas based on how much extra damage you take upon death, your corpse is flung back in a bloody trail -- tonight, but no testers were on so I couldn't test it. :P
Also, I think I'm going to need to rework the velocity/friction system of the game, because some weird physics quirks keep on popping up. More info on that when it happens!
| |
"Good night, Monster Land."
"Good night, brave warrior."
|
| S | M | T | W | T | F | S | | | | | | 3 | | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | | | 24 | | | 27 | 28 | | 30 | | |
OPTIONS
Track this Journal
ARCHIVES
August, 2009
July, 2009
June, 2009
May, 2009
April, 2009
March, 2009
February, 2009
January, 2009
December, 2008
November, 2008
October, 2008
September, 2008
October, 2007
September, 2007
August, 2007
July, 2007
June, 2007
May, 2007
April, 2007
March, 2007
February, 2007
January, 2007
December, 2006
November, 2006
October, 2006
September, 2006
August, 2006
July, 2006
June, 2006
May, 2006
April, 2006
March, 2006
February, 2006
January, 2006
December, 2005
October, 2005
September, 2005
July, 2005
June, 2005
|