Intel sponsors gamedev.net search:   
Gauntlets of Recursion (+7)By HopeDagger      
-->

Recent Projects:

[Gundown]
[Magma Duel]
[Admiral Overalls]
[Membrane Massacre]

Current Project:



Exceptional Journals (in no order): [Eliwood] [Steve Healy] [Ravuya] [Mark the Artist] [Scet] [Ysaneya] [Mayan Obsidian]

My Personal Website


Thursday, April 27, 2006
Been up to more network (and general) refactoring business. It's slow-going, painful, and doesn't really show any visual results, but it's necessary. :-/

I'd say I'm about 50% done now, so after all of this I'll be able to get the Item Editor (guns, utilities, tools, etc) written and sound effects in. Then that's another release completed. And release completion screams out 'big public test'. :P

Sorry for the lackluster entry, but boring lulls happen in game development too.

Comments: 0 - Leave a Comment

Link



Tuesday, April 25, 2006
Hey everyone -- it's been a while.

A lot of my time lately has been sucked up by both school and work, but a lot recently went into getting the darned webserver configured with phpBB and getting mySQL to play nicely with it. But alas, this is now all done. The Discussion Forum is up and running. However, since the Alpha testing is currently closed, only specified testers will have access to the testing schedule and client program. But drop by and help keep things active! I think I have most of my journal readers on the Alpha team already.



Private Messaging

This wasn't too hard to implement. You can PM someone ingame with the syntax: "[name] hello!". The 'name' can be abbreviated and is not case sensitive. You can also use a quick shortcut: to reply to the last person who sent you a message, typing "[] hey!" will automatically fill in the name for you.



5-Step Network Refactor

I won't go into much detail here, since the beef of it is already written out.

So far I have the first step completed, which is the change of network libraries from WSockets to HawkNL, which I'm finding somewhat more stable thus far. Plus, it has some cool built-in statistics (byes-per-second, # of packets, etc) that I could use to generate cool charts or something.

Most of the next step (order changed around), Server Authorative-ness, is completed. Previously I was letting the client make a number of decisions to make the game experience appear smoother, but as some people pointed out ways to explot this control the client had, I quickly realized that things had to change. So now the server calls the shots (quite literally!). All that's left is having the server keep track of ammunition/weapons so that the player can't potentially hack himself infinite uses on a weapon or utility.



Grenade Network Logic fix

I realized this one a little late, but when I did it blew me away. I set up my client to throw two grenades per throw: the local throw that the client usually sees, and the throw bounced off from the server that everyone else sees. Wow. Turns out that in numerous cases the landing location for both were off by a LOT. Especially in situations at high-speeds where one bounces off an object and the other didn't.

This ended up being because the initial velocity of a grenade throw is derived not only from how much you've primed it and what direction you face, but your player's velocity as well. So a small discrepency between the client and the server 'current-velocity' was resulting in a huge difference in the resulting throw.

Unfortunately rounding also played a key role here. My first tactic was to write two shorts for X-velocity and Y-velocity by multiplying both original values (floats) by 1000 and them integer-round them into a short, giving me precision to 3-decimal places. I thought that would be enough. Nope. Turns out even a tiny 0.0005 difference can mess up the trajectory of a grenade. Nuts. So now I've resigned and am sending two 4-byte floats. Groar.



Miscellaneous

  • Nail grenade got a boost from 50 nails to 75. Should make things a little more exciting. :P

  • Team auto-balance bug fixed. Forgot to remove a player from the Members list when he is removed from the game, which explains some of the really unfair games in our testing.

  • Added InactiveTime to bullet projectiles. This is a duration of time before the bullet will become collidable with players and objects. Mainly it's for the bigger weapons like the Minigun whereas there's no way you can hit someone with a gun that size that close. Also gives folks with melee weapons the opportunity to dash into their minimum range and go to Stab Town on them. :P
  • And just a little animation fix whereas (due to network lag) a player's firing animation would make them appear to be raising their gun to fire and then putting it back down again really fast in succession as they fired most guns. Looked weird, but that bug's quashed too.


Comments: 1 - Leave a Comment

Link



Friday, April 21, 2006
Woohoo! We just had an absolutely wonderful public test tonight with about 7 players. Not a huge number, but definitely a great 2 hour game we had going on. The Team War gamemode can be quite the rush! Not to mention Draffurd created a brand new map for us to play on in a desert scenario: Fort Freedom!

Special thanks to our brave testers tonight (in reverse name length order): Draffurd, Eliwood, Ravuya, Mushu, Hippo, Alex, and CJ. We all had a great time!

In fact, we had such a great time that we all forgot to take screenshots as we played. So me, Eliwood (Jon), and Draffurd went back on afterwards and cooked up some mayhem.


(And so it begins!)


(I hope nobody expected me to win a 2v1!)



Out of all of the great fun we had only a few bugs seemed to crop up:

  1. Some random Access Violations

  2. Explosives' inaccuracies over the network

  3. Strange 7-player maximum


The grenade/mines inaccuracies aren't really a bug, but they can be pretty confusing. Sometimes a mine will detonate on one client's simulation, but not for everyone else, which leads to strange events like mines dealing no damage. Grenades have similar problems: since a well-aimed grenade that lands directly on someone's head will immediately explode (fun quirk :P), this will sometimes occur on one client's computer, but be a full miss for another player. I'm starting to wonder if having hits server authoritative would be the best route. Not sure. Might have to pester the Network/Multiplayer forum about this.

The 7-player maximum has been a mystery to me for a while now -- it's existed since the beginning. For some reason after 7 players have joined nobody else can get a connection with the server. No clue.

Nuts, there went my plan to end on a positive note. :P

Comments: 5 - Leave a Comment

Link



Thursday, April 20, 2006
University

I got my second acceptance today; this one from the University of Toronto. My last one -- which I think I didn't mention here -- was from the Uni of Windsor. Since Windsor was really my 'backup' option, I'm glad that U of T wants me in. Now I just need to hope that the University of Waterloo accepts me too, for a few more ego points. :P


Mines & Claymores

Oh yes, mines and claymores have been implemented. And man do they make for some devious traps.

Let me illustrate the deviousness of claymores with the following screenshots:








Much fun. Especially when I did that the first time without telling my testers I had added claymores. ^_^

Mines work similarly, but trigger only when they are stepped on. For both mines and claymores, the more you charge them, the more hidden they become. So a trap that the person takes their time on will be hard to spot, and a hastily thrown together one will likely be evaded.

Oh, and the addition of the Nail Bomb. :P


(50 nails at 8 dmg each can be pretty troublesome. )


Comments: 8 - Leave a Comment

Link



Monday, April 17, 2006
Today was the painful I had been dreading: Webserver Day. I knew that I'd eventually have to figure out this web stuff in order to get the website up and started, so why not a Monday? :P

(For the record, I'm pretty ignorant in the realm of web programming and the likes)

I'd like to thank in advance the creators of these fine programs that made my life a lot easier:

WAMP Server
Cerberus FTP Server
(And of course those great guys who made Apache, PHP, and mySQL!)

Now things are finally funtional. The skirmishonline.com domain is still in the redirecting process to point to the server, but you can pop on the tempsite over here if you'd like and watch another movie we made showing off melee and nades some more.

FTP is also configured and my webdesigner should be getting a forum online in the very near future, to be followed by the website itself. I'm very excited to watch the community building begin!

Comments: 1 - Leave a Comment

Link


Happy Easter GD.NET!



Whew, the past few days have been an absolute coding rush. I'll blab a little about what I've done, with some nice screenies.

I'd like to offer a huge thanks to Alex, CJ, and Dean (alphabetically) for their huge testing contributions in this last progress spurt. You guys are kick-arse. :)


Grenades

That's right: grenades. I had fun implementing these, and they were a real hoot to test. Here's what happened when all of us went in the same room and spammed grenades (before I implemented reload :P):


(Somewhat an older shot; particles are now optimized in explosions!)


And I've finally prepared a video of me nading myself, for your viewing pleasure. :)

Grenade video (~3.8mb)

Grenades were particularly fun to implement because of the physics involved. When throwing a grenade, you can hold down the button to 'charge' your shot, making it go farther based on how long you hold it down for. Your movement velocity is also added to the throw, so you can make some pretty classy shots around corners, or long-range throws while running forward.

To add a bit more interest to the whole nading business, if you manage to throw a grenade in such a manner that it land directly on the enemy player's head (~6 pixel lee-way) it will instantly explode. Although this is very hard to do unless you've got "teh skillz", it counts as a direct hit and does about ~90 damage. Not too shabby. :)

Trees are a little tricky. If you throw the nade high enough it'll go over trees, but if it's as a medium-elevation it will get stuck in the branches and explode. If it's low enough to the ground it will bounce off it rather harmlessly.

Right now only HE Grenades are implemented, but more types will follow, such as Nail Bombs, Gas Grenades, and EMP Grenades.

Oh, and the Overkill effects on grenades let corpses go really far. :D


(Whee!)



Melee

Of course the next logical thing to do is melee weapons. :D

So far I've implemented Hand To Hand (does reasonable damage, and knocks target back) and the Combat Knife (lots of blood!). Hand To Hand will be a rather inexpensive 'item' that will be more of a last-resort weapon than anything else.

The Combat Knife is a tool that's wonderful for getting yourself out of close-combat situations or finishing off an enemy in style. A favourite strategy of mine is tricking an enemy into rushing me while I use a weak weapon (like a pistol or smg), then rush into them and jab a knife into them. It leaves a very cool blood squirt when you stab them that is satisfying on many levels. I've got a screenshot as well as a nice little video of us ambushing someone. :)


(Assassin style!)


And the video:

Melee video (~1.5mb)

There will of course be more melee weapons to come, like swords, energy blades, and the elusive VoltFist. >:)

(Also added Private Messaging and key customization for Tools)

Quasi-Boast/Rant: It's great. Me and my testers find it an absolute joy to play. We've created several 'minigames' while we test that prove to be great fun too:

Grenade Tactics: Everyone chooses a spot inside a building and then everyone gets a turn in the order they appear on the playerlist. On your turn you can either move 4 tiles, throw a grenade, or use a medkit. It's like a little turn-based strategy game that can be a lot of fun when there's enough good hiding places. :)

Melee Free-For-All: As the name implies, we usually use a big parking lot or open area and have a free-for-all knife battle. It's hilarious when we wordlessly team up on those with more health and charge around with our knives drawn. :D


All in all, progress is going wonderfully. I'm so glad that I stayed with the project and didn't do something silly like give up or try a rewrite. I positively cannot wait until we finish this release and do a nice big public test. :)

Next up, landmines!

Comments: 9 - Leave a Comment

Link



Thursday, April 13, 2006
Today is a good day. It is a good day because virtually every single frickin' bug has been fixed. I stayed up until 2:15AM beating away at my code and debug data, and finally everything is solved.


Evil Bug -> The Random Destructor

This one had me baffled. Since the results that were produced from this bug were pretty much random (very much like memory corruption bugs) it was exceedingly hard to track down. I ended up having to output all packet reading information and actually count up all of the bytes going in and out manually to figure out:

the server-out instance of PACKET_SWITCHWEAPON was sending out 2 bytes and the client was trying to read 3. Whoops. I forgot that clients don't need to send Player ID data to the server (server can figure it out based on address/port/socket), but the server needs to send Player ID data to clients. Thus the clients would all read one extra byte, rendering all of the remaining data in the packet (sometimes up to 100+ bytes) with essentially 'corrupt'/'garbage' data. This made for some very strange client-side occurances ingame. Things like non-existant players joining, weird garbage text/messageboxes, and in one case players spontaneously dieing. Very disturbing.

But now it's fixed, so all is now well.


Movement Prediction Revamp

This was the other issue that was getting on my nerves. It seemed that a lot of the time I'd land several consecutive hits in a row on another player, and it wouldn't deal any damage. This was obviously because the player is not in the location that my client is predicting he is. This is evident in many online games where you need to 'lead' the target to make hits, by firing bullets ahead of a moving player to where he will be in a moment. I don't like that at all, so I knew today was the day I'd start debugging movement prediction.

The first thing I did was rig up a temporary 'ghost' player to move around my local client with simulated ping. So basically what I'd see is both my local player and what the server would be see at a packet-update rate of 250ms. Wow; what I saw shocked me. On average, the player's true location was about 30 pixels off. That makes a big difference when you're fighting someone who is moving around.

So my solution was a (vaguely speaking) combination of forcing more powerful smoothening (none of that light nudging business :P) and more accurate guessing of where the player will be by the time the next update arrives.

Right now it's working beautifully on my simulation, but I still need to have it factor in the client's lag. Tonight's test should be a good one. My goal of having a bug-free quasi-large-scale test might be realized! :D


Oh, and I was so happy I celebrated by adding an automatic shotgun. I'm sure the testers will like that.

Comments: 6 - Leave a Comment

Link



Wednesday, April 12, 2006
The Good

Well, 6-player tests are always fun, at least. I finally got a FPS/update-speed bug ironed out so that now the game overall runs very smoothly irregardless of framerate. I had this somewhat in before, but slowdowns were still occuring. Needless to say, it's now very comfortable.


The Bad

There's just one bug standing in my way before I can get back onto real development. It's this strange one where I think I'm getting left-over data from one packet, and the game is interpreting it as another packet. For example:


(Clicky for full)



(Clicky for full)


And I am completely clueless as to what could be causing this. I've checked over my server send/recv and client send/recv code at least a dozen times and have spotted nothing. My hair is on the verge of being torn out. :(

Any suggestions? I know my problem is rather general, but I'm grasping at any straws here. (Sans alcohol -- sorry Mushu :P)

Comments: 6 - Leave a Comment

Link



Monday, April 10, 2006
It's been far too long since my last journal entry. I was going to distribute candies to compensate everyone, but I ate them while I typed this. Sorry.

The main time-hampers thus far have been work, school, and the preparations for getting our house sold. That's right, I'm moving. Nowhere far -- just about 15-20 minutes away into a quieter area. Newmarket has developed so much over the last 6 years, so we're going to find a nice placid place to relax again. :P

The other hurdle has been the recent mass bug hunt. A lot of bugs have cropped up that have been really hard to solve. Finally quashed one tonight, after three of us (Dean, Alex, and myself) sat in the middle of the forest in Alex's map and theorized about the bug and its implications. So a philosophical night on Skirmish. :)

Hopefully after the remaining bugs are fixed and tested against a 7-9 player pubtest we can at long last get to grenades, melee weapons, and mines. I can't wait. :D


(Clicky for full)



(Clicky for full)



(Clicky for full)


Ignore the fact that Draffurd is winning in all 3 shots. Hacker. :P

Comments: 4 - Leave a Comment

Link



Tuesday, April 4, 2006
Another night playing Oblivion. Tore myself away long enough to fix a minor bug with the minigun not appearing properly for remote players.

Sorry GD.NET. :(




Comments: 14 - Leave a Comment

Link



Sunday, April 2, 2006
So after a long day of work I got home and fended off the Oblivion Urge long enough to get a big chunk of the network refactor/recode done. Things seem to work, but not enough testers were online to perform a satisfactory test of it. Tomorrow's goal (if work doesn't hinder time too much) is to get in the extra security that will prevent any potential packet spoofing, assuming the spoofer gets past the encryption that's already in place. I'm feeling safer already! :)

Then nearly 3 hours of Oblivion to reward myself for my diligent work. Started a new character -- the Spellsword just wasn't doing it -- and I'm finding this Assassin to be most rewarding. Backstabbing skeletons into pieces that scatter all over the floor, or pegging a bandit with an arrow to the head that sends them flipping over the balcony edge. Even coating my shortsword with some nice poison for some hit-and-run tactics. And the world is so bloody huge. I spent 2.5 hours in one Elven ruin. One! Some very clever traps, too. Hehe. Oh, I love this game.

Also, a friend of Draffurd's, Odin, is going to be developing our website for Skirmish Online. We've already sent him a mockup of the site and a nice in-game screeny for the main banner. Looking forward to getting the website going and a community started. Additionally, a fellow -- James -- in my Discrete Math/Geometry class happens to be a Photoshop'er, and has offered to revamp my HUD into a much cooler style than my MSPaint skills allow for. Groovy.

And now bed. No screenshots again; network code doesn't tend to produce very nice images. :P

Comments: 2 - Leave a Comment

Link


All times are ET (US)

"Good night, Monster Land." "Good night, brave warrior."
 
S
M
T
W
T
F
S
1
4
5
6
7
8
10
11
14
15
16
18
19
21
22
23
24
27
28
29

OPTIONS
Track this Journal

 RSS 

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