-->
Recent Projects:
Current Project:

Exceptional Journals (in no order): [Eliwood] [Steve Healy] [Ravuya] [Mark the Artist] [Scet] [Ysaneya] [Mayan Obsidian]
My Personal Website
 More painstaking code'n |
Posted - 5/29/2006 11:07:54 PM | Layering
Doing proper layering in 2D games sucks. Period. It seems like sprites keep on getting mislayered with other sprites. Object shadows are now properly layered, but they eat up more CPU power now, since they are essentially just normal sprites with color (0,0,0,128). I'm going to have to play with my drawing order some more. Something like this would be ideal:
1) Ground (grass, snow, sand, whatever)
2) Tiles (paths, floors, walls, etc)
3) Wall shadows
4) Sprite shadows
5) Sprites (players, bullets, trees, boxes, etc)
6) HUD stuff
Right now player names and healthbars render on the same layer as the player, so names/healthbars vanish under trees and boxes oftentimes. Very annoying. :P
Not null, but not valid either
I finally realized where a lot of the access violation errors I've been getting are coming from. I was under the impression -- for whatever reason -- that Delphi had a primitive-ish garbage collection system that would generally take care of nulling out pointers/objects for me. I was wrong. Thus all of my nice "if blah <> nil then" checks were in vain. Well, not all of them, but several. I can catch if they are null, but not if they point to data that is now invalid. Doh. This is catching a lot on respawn-point lists and outgoing exposives (mines, claymores, etc) lists. Some more fun there. Makes me want to use C# or Java something fierce.
Miscellaneous
And some more random bugs with (the newly added) team-chat, player joining (again!), mines/claymores detonating on dead players, and enigmatic bad packet headers.
I know I'm complaining, but I need to vent somehow. Who better than the readers of my journal? :P (Hehe, sorry, you guys know it's nothing personal :P)
Arctic Outpost: new map!
Our first fan-map has been created by DarkCampainger (yes, intentional mispelling): "Artic Outpost". It's a very attractive Free-For-All map with lots of tight corridors and rooms, as well as a nice open area for bigger brawls. Here's some random screens:


Awesome work, DC! 
| |
 Naturally. |
Posted - 5/27/2006 12:12:35 AM | I felt like adding an entry, but had nothing relevant to say (sans some more bugfixes and minor additions), so I'll just throw a lame screenshot from the other night with an even lamer caption. :P
(Oh, and I also put in a higher-precision timer and some network optimizations that should give some very healthy network speed boosts.) 

(Not even alpha testers can miss a crucial board meeting!)
(And yes, they all threw grenades when I said 'cheese')
(And no, the janitors were NOT pleased )
| |
 Bugs? Huh? What are those? |
Posted - 5/24/2006 12:21:27 AM | Bug-B-Gone
Well, thanks to some help from the creator/admin of EurekaLog, I finally got it working properly. Woot! Now whenever a crash of ANY flavour occurs it'll catch it and give me detailed call stack info, including source code lines, and the files involved. Awesome. What does this mean?
It means no more flippin' mystery bugs! I'm extremely happy that I won't have to live with those annoying 'enigma bugs' that linger in your code that happen to crash it every now and then, but without any indication of where the heck they are. Well, I know where they are now. Turns out the big weird-crash bug was a map loading issue. Hah. Take that you pesky gnats. :P
Object rotation woes -- no more!
Thanks hugely to Paic on the DirectX forums who gave me the idea I needed to figure out how the heck I was going to get properly pixel-perfect collisions on rotated map objects. Previously I was checking a point against the object's texture, which of course doesn't work so well when it's rotated ingame, but still unrotated on its texture. So rather than try to rotate the whole texture, Paic gave me the idea of instead inversely rotating the point instead! Duh! It all seems to obvious to me now, of course. After nabbing some code off of GPWiki on rotating a point around another in 2D-space, I shortly had it implemented and working perfectly. Awesome. Now let those grenades bounce in style, my friends. :P
Also repaired a bunch of minor bugs, like when joining a game it would for some reason use your account name always rather than the alias you selected. Also took out a few old debug messages from a while back that are no longer needed.
The current item on my list is fully customizable controls, which I had before, but where really poorly implemented on my behalf. This one will make purely use of DirectInput, not Win32 input, and will allow both keyboard AND mouse input. Yes, mouse aiming for you keyboard-wussies. Hopefully this won't unbalance the game by making it too easy to aim. Fingers crossed. Ideally the effects of recoil will dampen any 1337 aiming skillz.
After that comes video configurations (fullscreen, particle count, vsync, resolution, etc), then some minor stuff like having a "Remember my Account Name" checkbox on the login window to save valuable typing time. Then getting that pesky 3D sound working!
No screenshots tonight. Unless you count bug-hunting worthy of image-isms:

| |
 Next up? |
Posted - 5/23/2006 12:17:45 AM | Alrighty. Now that the testing session is done, fun and games time is over. Now I need to work on fixing the bugs that cropped up during the tests, and then do the rest of the implementation for the remaining goodies in this version. Here's the Roster of Demonic Bugs that I'm up against:
Game Isn't Clearing Game Data on Exit
Oops. If you quit a game then rejoin, or host a new one, it'll load map data over on top of what's already there. This was because previously one execution of the game client == one map. Now that I'm functioning with multiple games per client session, I need to clean up after myself. This is now fixed, but resulting in interesting bugs like bad framerates, objects in strange places, and respawn points inside the walls. 
Players Dropping Randomly
I'm still not 100% on the cause of this, but during another test I did today with 6 players, people seemed to be dropping every now and then somewhat randomly, even though their ping only went up around the ~350ms range. I think this was because I was relying on dropping players if they didn't get a ping update within every 9 seconds. Ping updates are issued every 4-5 seconds, so I figured I'd be safe. However, I think packetless was causing these false negatives, so I bumped it up to 20 seconds just to make sure. I'll test this next session.
Distortion on Some Graphics
If you look closely at some of the grates and bathroom tiles, you can see some distortion. Apparently the GraphicsEx library I found to load PNG files was botching it up. So I converted all of my graphics to the BMP format (GROAN; was mundane even though I had a script to do most of it :P) and had it use that data to build the final Graphics.OIL file that the game uses.
If You Exit the Game, You Cannot Rejoin
This was really weird, and quite annoying. If someone played in a game, left the game to return to the server listing for whatever reason (change player name, controls, etc) and then proceeded to join any game, he would always fail. WTF? So I spent a good 3-4 hours on that today. Then when I did a test and viewed debug data, it turned out that the client WAS receiving the confirmation data when he tried to join for the second time, but just wasn't acting on it. Odd.
So I checked some variables and concluded that I'm a moron. I had forgotten to reset the local player to NIL. So the game kept on insisting that it already had a local player assigned when the server was trying to hand it login data. Hehe.
Master Server Not Always Dropping Clients
For some reason or the other, every now and then the master server was sometimes keeping players logged in and active that had already quit. This was a big pain since it would require a master server reboot in order to fix for the players that were experiencing the bug. So now any attempt to log in while another player is on that account will boot them off and let the newly attempting player in. This solves the problem -- well, it's untested, but it SHOULD -- but I think I should restrict it to both attempt'ers having the same IP address, just in case someone with another person's account name/pass wants to boot the person out for kicks. :P
Two Types of Random Access Violations
I'm baffled here. Sometimes, rarely so, upon joining the player who is trying to join will receive anywhere between 1 and INF Access Violation pop-ups. Sometimes it occurs to the game host as well. I even got a report today of it occuring when someone tried to host a game themselves. I have zero clue about what is happening. I found a neat Delphi debugging utility that SHOULD be able to get a nice call stack with line numbers, but no go with it so far. I've posted on their forum and am hoping for a reply sometime soon. If this thing can work, than HopeDagger->DebugSpeed++. For sure. (For anyone curious, the util I refer is 'EurekaLog')
Object Collision are FUBARed
Ever since I added customizable rotation to game objects, collision detection has broken down. This is because of how I was checking for collisions before. I made a thread on it over here, so you can read up on it there if you're interested. This is non-critical, but still high-priority.
NEW GRAPHICS
Draffurd had another great graphical spurt today. For those of you who actually made it this far down the post in reading my boring bug reports, you deserve to see the fury of: couches, pot plants, tables, sinks, and toilets. Joy!

(Joy! Purty!)
| |
 TEH UPDAET! |
Posted - 5/22/2006 12:23:55 PM | BIG UPDATE!
(Screenshots galore await!)
This week has been pure adrenaline, and I couldn't be happier about its outcome (sans a few bugs :P). All I can say to everyone who has even uttered any words about Skirmish Online is, "thank you so much". Skirmish is finally starting to become a real game, and I'm literally dripping with pride for what me and Draffurd have wrought with our bare hands. 
Introducing our newest contestant: The Master Server
So far we've been using a temporary system of sorts for game hosting. I would compile two different executables from the source: one that acts as a server that people can connect to, and a client that connects to the hardcoded server address. This has been fine for our smaller tests and alpha romps, but now we need to allow everyone and anyone to be able to host their own games.
I decided to do this in the rather popular manner of having a master server: a program which holds a listing of all games currently being hosted by players, thus supplying the address of where to connect to players looking to join a game and keeping everyone playing interconnected. This also meant a system to hold player accounts. An account holds a whole medley of nice data, like player aliases (each a unique character), which all have their own name, scores, and other goodies. This allows people to unify all of their characters under one common account, and makes it easier for the banning system to get rid of dilenquients as well. 
 (Logging in!)
 (Hosting a game!)
 (Looking for a game to play..)
There were, however, a few bugs with the master server that need to be patched up. Players who leave a game cannot rejoin it again, for some reason. And leaving the game and restarting the game will disallow you from logging in again. Strange ones, but I'll get 'em. The other [humourous] bug is that I forgot to cler the game data every time you launch a game, since previously every game only got launched once. This means that maps will load data on top of previous maps, making for respawn points inside walls, objects in very strange places, and other weird occurances. Not to mention eating more precious system resources. 
And the testing session: New Graphics, New Map, and WALL SHADOWS!
Oh man, was last night amazing. Although the number of people available on MSN to play was rather sparse, our 5-person game last night was simply astounding. It made me realize the whole reason why me and Draffurd started to make this thing in the first place. The hour and a half flew by. Bullets flew across the map, explosions rung out in the hallways, and corpses flew across the map in large overkills. 
And of course, the screenshots of Draffurd's awesome new graphics, and kickarse map, "Chaos Castle". (He wanted to name it "Cozy Castle", but I had to put my foot down!)
 (Takin' out the trash.)
 ('Naded in the parking lot!)
 (Beaten, but revenge via claymore. >:))
 (Skirmish Online's first triple kill :D)
 (More general pandemonium)
</center><BR>
<BR>
<center><a href=)  (Tonight's cast.. (sans the early-leaving Ravuya))
(More mushy) Thanks!
Once again, I thank everyone who has worked on the game, helped test the game, offered me words of wisdom/praise, or just that visit my journal. You've all been of huge motivation and help. I feel like I'm giving a speech upon the game's completion, but we're still a long ways off from that. But heck, I've got to celebrate each of the steps along the way; they are the most important of all. :)
Thanks everyone for helping make Skirmish what it is (becoming!) today. :D
| |
 Untitled |
Posted - 5/17/2006 8:54:33 PM | Huzzah, finally got my Offer of Admission (acceptance) from the University of Waterloo. More or less THE computer science uni in Ontario. :P
Honours Computer Science, Co-op here I come. 
| |
 HURRAY! CRUD! |
Posted - 5/17/2006 12:04:20 AM | Hurrah, we just had a hugely successful testing session with 8-9 players!
Crud, I forgot to any screenshots! Or rather, I took then via PrintScreen but then forgot about them and overwrote them with another copy afterwards. Darn. And they were so dang inspiring too. 
Since there's no screenshot, I'll use some imagery to describe the sheer amazingness of it all:
You awaken with a chill, on this cold dreary May evening. Your computer flickers to life with a single messagebox requesting a name. Your name.
Without hesitating, you lower yourself purposefully into your creaky computer chair and key in your alias. With only a moment's pause, you grasp your worn mouse and click on the daunting 'Enter' button before you.
PHAM! You are instantaneously transported into a new realm! Soldiers are shouting and firing all around you, and explosions shake both your monitor, speakers, and your very bones. This must be that 'Skirmish Online' thing that all of the kids were talking about.
You hold TAB down for a moment to take in the battle details. The ping is up a little high -- likely the host's pitiful connection; you shrug it off -- and, wow, 8 players online? How could this be? Previously it had only risen to 7, and that was on a map 3 times this size!
The miniscule 25x25 chunk of land was torn asunder with warfare, and looked to be accustomed to it as well. Shrapnel whizzes by your head as you duck beneath the safe cover of a stray computer desk and check the clip loaded into your Naop Assault Rifle 551. With a grunt of satisfaction, you leap out from under your cover and open up a burst of fire that lights up the surrounding terrain, and let forth a mighty bellowing shout, "NO MERCYYYY!"
There we go. And only a fraction of the bandwidth of an image. :P
| |
 Well, there goes the posting spree.. |
Posted - 5/16/2006 12:21:54 AM | Remember: not posting doesn't mean not working! 
Map Editor / TOG Editor
The Map Editor (for making maps) and TOG Editor (for making Tile/Object/Ground definitions) are both completed and have been integrated into the game itself. Everything is working just swimmingly on that end.
The new map editor also meant a new map format. This one is much more flexible, allowing for cool new stuff that wasn't possible before. Things like half-walls (for throwing grenades over, but not shooting/walking through), water, and object shadows. Object shadows!?
Shadows
Yes, now players and objects have shadows. And it feels good. :P

(Sure it's not fancy-dancy 3D hardware shadows, but it gets the job done! )
Login Refactor
My login code has been a realm of disaster since the beginning. I'm still not sure if the first refactor of it helped or not. Either way, I decided to take simplicity as the best route:
1) Client sends login data to server and waits 3000ms for a reply.
2) Server receives login data, creates the player's "shell" and tosses him into Limbo (a playerlist for non-existant players).
3) Server resends gamedata/confirmation to player until a timeout (3000ms again) or an acceptance from the client. Then we're good to go; the player leaves Limbo and enters the Realm of Players(tm).
I've been stuck with a raging bug with regards to the new login sequence that's been plaguing my code AND mind -- seriously, ask Ravuya, I've been blabbing to him non-stop about it :P -- and it seems to finally be fixed. Apparently there's a split-second or between when the player enters the Realm of Players(tm) and when he gets assigned his weapons. As more players join that split-second grows, and grows until TPlayer.Update() gets called and when CurWeapon = nil, well... I'm sure you know the rest. Needless to say, Delphi's built-in debugger was useless in the matter. Kudos to a random utility I found, "AVFinder", which helped me in narrowing down my search. Phew.
And as a result of all of this hard bug-finding we were all rewarded with an awesome bug-free game of Free-For-All in my tiny made-in-5-minutes map.
Extra points go out to the recent noble League of Testers (in no order): Jeremy, Ravuya, Cold Steel, and Blandin. I was bugging them to help me test/debug every 10-20 minutes nearly all of today. Thanks guys! 
What's Next?
Now that all of this 'clean-up' detail is done, I can move on to the focus of this version: the Master Server. The first step is creating the new client interface for the Master Server (no more temporary ugly login-box nonsense), and allowing players to create accounts and login to them. And of course the many bugs that will doubtlessly follow. :P
I'm as tired as bananas, but I'm extremely happy at what I've managed to accompish, the bugs I've managed to quell, and at how much fun Skirmish Online will one day bring the world. 
</over ambitiousness>
| |
 Untitled |
Posted - 5/12/2006 10:33:49 PM | More map editor goodness. Almost done. Working on fixing an annoying bug in the client that spontaneously appearead. And bullet timestamping broke on its own too. Grumble.

(Object rotation; pops up a little grid and lets you snap to 90-degree intervals for ease-of-use)
| |
 More map editor goodness packed into every antelop |
Posted - 5/12/2006 12:28:32 AM | Domain Returns!
Both http://www.skirmishonline.com and http://forum.skirmishonline.com are up and running [at time of writing]. GoDaddy email support I found much better, and no long-distance charges!
So poke around the forum if you haven't already. :P
Hot Sauce
I got some hot sauce in my eye today at work. Ow; it stung a lot. The doctors say I may never code again. 
Skirmish Map Editor (SME)
More done on the editor today, despite Geo/Discrete sub-test at school and work afterwards. Today:
[*] Ground(s)
[*] Drawing/display test ground
[*] Scrolling the map with arrow keys (speed scroll with SHIFT+arrows)
[*] Applying Ground to the map
[*] Selecting palette types (via buttons)
[ ] Tile(s)
[*] Drawing/display test tiles (random scatterment)
[*] Display existing Tiles in palette
[*] Draw no-draw tiles on out-of-map tiles
[ ] Applying Tiles to the map (via drag+drop rectangles)
[*] Get rectangle logic/mouse-dragging working
[*] Handle rectangle 'flipping' cases
[*] Draw based on rectangle data

(I still need to have the selection-rectangles (not shown) scroll with the screen properly (arg!))
| |
 Map Editor and Test! |
Posted - 5/10/2006 11:29:25 PM | Testing Session
Had a fun testing session tonight with Cold Steel, Toxic Hippo, and Jeremy tonight. The hour or so of carnage just slipped away as we gunned eachother down and had some good mini-discussions about the gameplay and future additions. Also uncovered another juicy bug. Thanks guys!
Skirmish Map Editor (SME)
It's in the works!

| |
 Skirmish FTW! |
Posted - 5/9/2006 11:16:21 PM | Progress! Huzzah!
Once again, perseverance is the winning key to success. 
I fully changed the network code over from HawkNL to Winsock in one day alone, which is 5 times faster than I had (grudgingly) predicted. Not only that, but I've fixed up virtually every bug in the game. Here's what I did today and yesterday:
[*] More bugs
{*} Rework login sequence
{*} Players not seeing other players' bullets (really fast?)
{*} Server dropping all players when any one player drops
[*] Remove all mines/claymores/projectiles/grenades belonging to a player that exits
{*} Claymores aren't blending based on power/charge-up
{*} InactiveTime on bullets preventing game object collision
<*> Lower inactive-time on hardpistol; increase range; lower recoil
[*] Have recoil recovery occur irregardless of shootcount
[*] Change 'recovery' to 'physical recoil' (so the push-back force of firing is seperate from the gun's recoil)
{*} When you have two medkits, one doesn't work (o.O)
{*} Multiple joinings per player (due to multiple login data sends)
{*} MG and Pistol ammunition not recv'ing properly for clients (44 always?)
{*} Make players with respawn counter left invisible until respawn
{*} Players not acknowledging death notifications for other players (sometimes)
[*] Display shots left on HUD based on #-of-bullets per-shot
{*} Turn off all utilities upon respawn
{*} Turn off collisions on non-visible players
[*] Network rewrite (to Winsock)
[*] Backup source :P
[*] Network init (server and client)
[*] nlWrite and nlRead to send() and recv()
[*] Main loop (server and client)
Progress feels great! Not only that, but now everyone is having zero trouble connecting. Previous Draffurd was unable to connect from home with his (wacky?) router system, but no problems now. And the previous issues with multiple login retries being needed are very seldom. Login request, notification, login data, boom: you're in. Very clean, very fast. And I'm gloating. Sorry. You guys know how accomplishment feels!
Additionally, as a strange bonus, player pings seem to be a LOT lower now. 40ms or so doesn't sound like much, but that's a big difference when you're going down from 100ms to 60ms on average.
The last item on my v0.05 Roadmap is fixing up grenade physics, since nades sometimes still get stuck in walls or on top of an object like the crates. I also have to change the grenade 'height shadow' to appear shorter when the grenade is on an object to give the illusion of height.
Skirmish Online Website
..is down at the moment. I had a <sarcasm> fun </sarcasm> chat with GoDaddy.com about some problems I've been having with the site. Long distance. As in, Canada to Arizona. No toll-free number. Arg.
Anyways, the first guy who 'helped' me didn't solve anything but tell me that it must be the scripts on my website that's doing it. Yeah right. Silly goose. So I called again and got another tech guy. This fellow really knew his beans and I wish we had more knowledgable folks like him on technical service. Anyways, he helped me get the settings I needed and within 48 hours it should propogate and be fully functional again. The forum will have a nice subdomain at http://forum.skirmishonline.com.
Oh, and Skirmish Online is now the 4th item on Google when searched for. Soon I'll topple that peculiar UK band of the same name and take over! Bwahaha.
| |
 The dreaded network rewrite (again) |
Posted - 5/8/2006 11:42:50 PM | You'd think after writing the network code the first two times I'd learn. No way. 
First off all, I offer my huge thanks to Phil Frisbie Jr. who wrote the very impressive HawkNL networking library. It's been great to me, aside from the few caveats with the UDP system he's implemented that I wasn't aware of until recently. This article has (in summation) much told me that UDP on HawkNL is more or less incomplete. It seems to use one port per client, amongst other things, which I now see has been the culprit of all of these strange network/router issues I've been having.
So with many-a-sighs I believe I will be resigning to Winsock, and hopefully will be rewriting this confounded networking system for Skirmish for the last time. Then maybe I can get on to content or something foreign like that, hehe. ;)
And thus v0.05 is not completed yet. I'll try to do this rewrite in a week -- or less if my compiler is forgiving -- so that I can push forward once more and have a nice big juicy [successful?] public test.
I'm pretty down in the dumps about all of this, so if anyone has any false optimisisms to share with me, you'd best do it now. :P
| |
 Network madness |
Posted - 5/7/2006 11:01:33 PM | How NOT to run a public test
It's times like these that makes me want to settle down with a nice roguelike instead of all of this nonsensical "online game" jibberjabber.
Phase #1: Webserver dies after me and Draffurd install sound drivers. Darn. There goes an hour or so until we try reinstalling the network drivers AGAIN overtop the old ones and it works. Yay. But not for long
Phase #2: Nobody can connect to me while I'm hosting the game except one of our testers, CJ. Huh? This is weird. There goes another hour or two. Turns out I was trying to send data to a player with a null pointer. Darn.
Phase #3: It "sort of" works. We had a small group of very valiant testers (thanks guys!) who kept on getting disconnected every two minutes or less due to some disconnection bug that's cropped up. And other bug where bullets move so fast you can't even see them, for remote players. Oh, and ANOTHER where players (remotely) aren't getting death-notification packets. Guh?
I'm baffled. I really am. Everything just spontaneously broke. Ever get that happen to you? Nuts. But don't worry, I'll pick up the shattered pieces of my gamedev life and rebuild, repair, and reboot.
Doh, geometry/discrete quiz tomorrow morning. 
| |
 Sounds 'n Bullets |
Posted - 5/5/2006 1:04:51 AM | Ironically the last couple of hours of the night are the most productive. Har. 
I have sound (or at least the sound 'system') fully implemented now. All of the items have sound effects associated with them except mines and medkits/adrenaline. Abstract ones like that are hard to find. 
Special thanks to FindSounds.com and A1 Free Sound Effects for getting me the sounds I needed to get things sounding good. And good they DO sound! The game feels sooo much more immersive when you actually get to hear the bullets raging out of your gun, and explosions that jar your speakers. :P
The notion of having a game with sound effects is especially tantalizing because many of my game projects achieve failure long before the point where sounds are required. I can't express what I treat it is to see Skirmish this far along!
And finally, the last items on my Roadmap for v0.05 is proper bullet images. Up to now I've been using the line interface that comes with Direct3D, which is limited to 1-pixel-thick lines. This was a huge boon at first, but thin bullets can be hard to see on many backgrounds depending on the colour. So now I have an image that I dynamically colour/shade during runtime depending on what colour the bullet is.

(I think it looks a lot cleaner; how about you?)
And darn, I lost the screenshot I had that showed off the sound effects.
| |
Page: 1 2 »»
All times are ET (US) |
"Good night, Monster Land."
"Good night, brave warrior."
|
| S | M | T | W | T | F | S | | | | | 4 | | 6 | | | | | | | 13 | 14 | | | | 18 | 19 | 20 | 21 | | | 24 | 25 | | 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
|