Finally, online multiplayer!
I’ve updated the browser plugin to finally support full online multiplayer! Go try it! I think the plugin is now stable enough that I am promoting it as the officially recommended method of playing the game.
Of course, there are still some problems. Namely, in Internet Explorer the mouse control doesn’t work. Testing so far has shown Firefox 3 and Chrome (on Windows) handle the game very well.
So give it a whirl, and please post any errors or bugs you get, along with your OS and browser!
[edit] Complete feature list:
- The lobby server is finally live!
- Reloading and clips. Units that are reloading are highlighted to show their vulnerability.
- Shadow mapping
- New map: “Orbital”
- Improved unit controls: you can only buy two helper units now, but you can control them more easily with the Q and E keys.
- New weapon: Pistol. Shoots darts capable of pinning enemies to the wall in certain circumstances.
- Shattering glass; AI bots can’t see or pathfind through the glass. You can shoot the glass to let them through, or leave it and use it to your advantage.
- Drastically improved network performance and reliability. In addition to a slew of bug fixes and optimizations, the new network code uses data compression and client-side interpolation to keep things running smooth. Bandwidth usage was cut down by about 60% in some cases.
Update
Not dead… just really busy. Been doing a lot of network debugging and optimization; I added zlib compression to the network packets, which cut down network bandwidth by about a fourth. I also streamlined a few network issues, added a simple network performance logger, and implemented simple client-side interpolation; everything moves much smoother now, even if there is a slight delay. It’s basically a fact of life these days in online games; as long as hit detection is still accurate, a small delay is practically unnoticeable.
I’ve been somewhat inspired by Mass Effect 2.
The fact that you only have two squad members makes things much more manageable, as you can use the Q and E keys to select them, rather than the number keys. I’m definitely stealing this idea; much more ergonomic. And I find myself using my squad members’ special attacks in ME2 much more often then giving them positioning orders; I haven’t had much success with getting them to flank or sneak up behind the enemy. That’s something I’d like to be different in A3P, but currently, the only commands are “move up” and “fall back”. That will change soon.
I need to refine the online experience a bit, mostly by adding leaderboards and an in-game score summary, and also by rewriting the code to allow for dedicated servers. I’ve been thinking about the online experience more and more, and I’m toying with various ideas, including a global sort of on-going tournament, where you fight your way up a certain number of levels to the top. Instead of being eliminated when you lose, maybe you would just lose a level or two. It would be like automatic match-making.
I also just added a new weapon, the pistol. Okay, it’s sort of a pistol. It fits best into the “pistol” category. Basically, it shoots like a handgun in Counter Strike for example, but it shoots these big darts that, if you line everything up, can pin someone against the wall until they die. Note that I added a new model for the chaingun; the old chaingun model is now used for the pistol. Just in case anyone gets confused.
In other news, the Panda3D maintainers (mainly rdb) are looking into some issues with ODE on Ubuntu. Hopefully once those clear up, and I fix the gimmicky mouse control problems, A3P will be available in an easy-to-install .deb package for Ubuntu. Keep an eye out for it.
Last but not least, the lobby server is finally up and running, although lighttpd seems to need restarted every few hours to keep it working. Not sure what that’s all about.
Gameplay trailer
Finally got sound working in these videos, yay! New features in this video include the aforementioned shadow mapping and reloading, a brand new three player map called Orbit, and heavy modifications to the original Impact level.
I really cannot wait to get the multiplayer up and running, and get people playing the beta. Next on my to-do list are a few standard online features: basic match-making, in-game chat, etc.
Without further ado:
Reloading, shadow mapping
Thanks to the Panda3D 1.7.0 shader generator supporting shadow mapping, and the awesome new BuildBot service set up on the Panda3D website, A3P now supports basic shadow mapping! Actually, the sun is just implemented as a giant spotlight with a 2048×2048 shadow buffer. Definitely not the most efficient or high-quality method, but certainly the easiest, and the results are acceptable.
Also new in SVN is a reloading mechanic. The shotgun, chaingun, and sniper rifle all have to be reloaded, with varying clip sizes and reload times. Of course, reloading units are highlighted as vulnerable, and they also beep furiously to make it perfectly clear they need to be shot at.
Weapons in general have been made more deadly; it’s now possible to get a “headshot” with the sniper rifle by hitting a droid directly in the center, resulting in instant death. The melee claw (not the saw blade) is also instant death now, although its range has been decreased, and other weapons are unusable while it’s active.
And the obligatory screenie:
Schedule delays
It’s time to face the facts. While the game is progressing at an incredible pace, it’s not going to be ready by January 9, or even the end of January. So, I guess I failed to meet my deadline.
But! I’m not giving up. I’ll still be releasing regular updates, and especially once the multiplayer lobby server is set up, things will start getting a lot more polish. My new goal will be to finish the game before school lets out for the summer. Of course it will be online and playable well before then, but I won’t consider it “finished” until I’m satisfied.
In other news, I’m having some trouble with game replays, so I’m temporarily disabling them and replacing the menu background with a new image (work in progress):
v0.5a released
That “a” stands for “not quite ready yet”. This is sort of an intermediate release thatĀ focuses mainly on online multiplayer, which is largely functional, but needs more testing. Aside from polish and bug fixes, the only other things I’m going to add are more weapons and special abilities. And maybe a new level. We’ll see.
This release went much smoother than the last two, as I used Panda3D’s built-in packpanda to make the installer. I also cut the installer size down by scaling images, deleting unused files, and resampling music and sounds into the Ogg Vorbis format. It’s incredible what Ogg Vorbis can do; without sacrificing any quality at all, I cut down the music size by about 20%. With a bit of downsampling, it was about 50%. The final installer is 80 Mb, a far cry from the 176 Mb v0.3 installer!
Anyway, the browser plugin on the website is also up to date. And surprise! A quickie gameplay video. I wish I could record sound in these vids, but alas.
New name: A3P
Goodbye Stainless, hello A3P. I spent a good chunk of time creating new A3P material and switching everything over to the new name. Unfortunately, SourceForge’s UNIX rename feature is down, so I created a new project for web hosting purposes only. The code and file releases are still on the Stainless SourceForge project. Which, to be extra confusing, I renamed as well, but again, I couldn’t change the UNIX name.
Take a look at the new site, complete with ultra-short URL: a3p.sf.net
The site header graphic should make it pretty clear what A3P means.
Also note that the experimental browser plugin is now officially linked! Try it out here. SheevaPlug still hasn’t arrived, so if my dev computer isn’t on, you’re out of luck for now. Sorry!
New gameplay
Sorry for the distinct lack of updates this blog has. A lot is happening right now with Stainless, and most of it’s good.
First off, Stainless is going to have online multiplayer! Woot. Thanks to the fabulous work by the guys over at Panda3D, it may even live in a browser plugin on the SourceForge website. Either way, I came across a problem I never anticipated with online multiplayer: NAT punch-through.
If you don’t want to read that article, it basically says that I need a lobby server to hook up servers and clients trying to connect to each other. No problem, I’ll just use SourceForge, right? Wrong. Turns out this NAT punch-through stuff is nigh on impossible with TCP, so you have to use UDP. And SourceForge won’t let you listen to UDP traffic.
So it seems I need to rent a dedicated server, or set up my own. I opted for choice #2, since this is a pretty small project, and not worth the money yet. So I bought one of these babies:
It’s a SheevaPlug server, and it costs $99 plus shipping. No idea how well it’s going to work, but apparently they’re pretty reliable. It runs Ubuntu, and I’m going to set it up with Dynamic DNS for the ultimate poor man’s dedicated server! It should be able to handle the load (if there is any), because I’m just having it listen for a few bytes of UDP traffic. Any heavy-duty web serving will still be handled by SourceForge.
In terms of the actual game, a lot has changed. You can now mix-and-match special abilities with weapons to create your own unit classes, and you can pick your own player special ability, along with two weapons. The possibilities here are endless, and I haven’t even added all the special abilities I want to implement.
Here’s a screenshot of the new unit selection screen, and a random screenshot of the latest version of Impact.
Stainless v0.4
Available on the new website: stainless.sf.net
There’s a whole bunch of new stuff in v0.4 that I don’t have time to talk about. So check out the website to see the new HD trailer.
Replay functionality, new icons
Yes, you can now view the last five games you played as a spectator! All I did was save each network packet that’s sent out into a big list, then use Python’s pickle module to serialize the list to a file. Each packet has a timestamp, so I just read the packets back in order, checking the timestamps to make sure it reads the packets back at the right speed. Fast forwarding is not implemented, but it would be pretty easy. Rewinding/seeking would be more difficult, so I’m not sure I’ll get to implement those.
On the artistic side, here’s a sample of the new icons! They’re monotone so they can be tinted with the team color.








