Bane - Unrealscript
Little did I know, the day I sniped my first bot in Serpentine, that I'd one day be able to officially sneak backdoors and cheats into it... ;)
Since the first time I fired up Serpentine, it has remained one of my absolute favourites among mods. So, when Unreal v2.20 once again broke Serpentine's bots, something made even worse by the fact that we were talking about the Final Beta here, I decided to try to fix them myself. When I'd actually managed to make them walk, I considered contacting the Crystalline team to see if they would be interested in implementing the tweaks into the upcoming 224 version of Serpentine.
With Aie leaving the project, I got the chance to wrap up the project, adding all the various tweaks and obscure features I'd developed. Now, "wrap up" has a terrible ring to it, especially since it would mean that many of the ideas that still remained to be implemented would never become realised. However, after seeing my virtual puppy-eyes, Latham naturally couldn't reject my suggestion to let the project remain open.
So, from hereon, make sure that any mail bombs are sent to me, and not Aie!?! as he will be completely innocent where future bugs are concerned.
Bane / Franz Kresten
Latham - Project Lead
Longhair gentlefreak, cynical idealist, and resident weapons afficianado.
Cycles. Wheels within wheels. My previous bio alluded to the cyclical nature of development, as I run the circle from enthused to burned out and back again. As the hamster wheel spun, I found I wasn't quite ready to let go of Serpentine after all.
Something of Bane's exuberance seems to have rubbed off on me, what can I say?
So, Serpentine development continues, on one condition...
If you mail me asking us to include a new weapon in Serpentine, I'll devour your still beating heart with a knife and a fork before your wide and death-glazing eyes. Just so you know. :)
Latham / Deric Ruhl
Aie!?! - Coder / Net Presence
Long Live Serpentine... Serpentine Rest in Peace
A History of Serpentine
I've been programming in various languages for 15 years now, including off and on professionally for the last eight. After meeting Latham in 1991 and realizing shortly thereafter that we had the same goals in what we wanted games to be like, we started trying to write our own game. You've never heard of it, nor have you heard of the 8 or 9 other titles that we built design docs for, and went about implementing the WRONG way, with the youthful idealism that hallmarks most startup development teams today.
When I picked up Unreal to try at our Memorial Day LAN party (June 1998), we were blown away by the graphics, and the texturing abilities and lighting that Unreal offered, but single player play seemed to end about 6 levels in, and we were put off by the ineffectual weapons which promoted spraying into a corridor and praying that you -MIGHT- get a hit. After everyone had gone home, I fired up UnrealED and started poking around to see what I could pull up. After two really crappy levels I concluded (like I have with every FPS in the past) that I am not a mapper. 8). Then I started playing around poking through the UnrealScript that runs the game. Right about that time, the very incomplete but hellaciously useful nevertheless Unreal documentation appeared out at Tim Sweeneys website.
Armed with the knowledge of how to create a new package, compiling and loading it into the game, I began playing around with a copy of the Automag, trying to fix all of the problems we had with the way it had felt. When I demoed the new version to Latham there was that spark of 'Kick Ass! We should go through and tweak all the weapons to play how we want'. Latham picked up his copy of Unreal the next day.
After another week or so, we had something that had most of the basics that you see in Serpentine today, the only thing missing was a new model. Latham built I don't know how many different versions of the 1911 before we finally had one that worked with Unreal. Many thanks go out to Ian Dacek who helped us get the finicky at best 3ds2unr working, and to Brandon "GreenMarine" Reinhart for mentioning UNMIRROR=1 one day on irc. Of course unmirror is undocumented, like all of the #exec commands that one uses to import models and textures but it solved the last big problem Latham had.
It was now almost the middle of June, and there had only been 3 other weapons released for Unreal. The Quad Shotgun which used a mesh that was left in Unreal but never used. The Double Automags, which basically had two Automags, akimbo, and another Shotgun also using the mesh from Unreal. Latham and I were looking at the then budding scene and decided that instead of keeping our new gun to ourselves, that we'd release it to the scene, and we went through and picked out a handful of weapons which we thought would be reasonably balanced, that we had decided we needed for LAN play, and built the first Serpentine Website.
After looking around, we decided to ask Unreal.org (the hand rules!) to host us... when Max and Morn saw the screenshots they offered us a spot. We told them we didn't want to p1mp our site at all until we had a download ready, because both Latham and I firmly believe that without content, TC's, PC's and other mods, are all vapour and should be working on their content, not p1mping their egos with flashy websites and such. Somehow a link to our site got out a couple days before our first release, and we were flooded with email. We released at Midnight that Friday, and set a tradition of Midnight releases with an accompanying release party in #unreal and #unrealed on Gameslink IRC.
A few weeks later came SBeta2 with the Ithaca. Shortly after that we picked up Arteris to do maps for us. One of my favorite maps 'SerpTemple' came out of that period in our development. Unfortunately within a couple of months, due to some weasel-like moves by one of the 'Corporate Style, Cookie Cutter Fan Sites' (You know who you are), Morn (which IMO just cause) became disgusted with how the scene was turning out, and closed Unreal.org. He gratiously allowed us to keep our site there until we could find a new home for it. After looking over the scene, and considering Latham's dislike of one of the admins (no longer present) at UnrealNation, and my dislike of the style of business that CriticalMass uses for its PlanetXXX series of fan sites, we asked Greygore of Unrealized.com if we could host with him. I offered to cover our bandwidth costs (which at the time consisted of a regular 200-500 downloads a day during the inbetween time of releases, and peaking at around 2000 downloads during the first four hours after the release of SBeta3. At the time, our package was roughly a meg in size, you do the math.) Greygore thought about it for a few days, since he doesn't host sites normally. When we saw him next he had decided to let us live there. We even had our own subdomain: serpentine.unrealized.com. Life was good.
SBeta4, while never released was a major turning point in Serpentine, at that stage I knew that in order to finish the project (which was looking like we might be able to do, for the first time in our history of working together) I'd have to redesign the way the code functioned. Latham decided at the same time, that a graphics overhaul was due, now that we were both immensely more comfortable with the do's and don'ts of Unreal Editting. After almost two months, we released SBeta5 and with it, the neverending gush of fanmail increased in volume. Unrealized and Serpentine had outgrown their hosting requirements, and due to some issues with the different serverside programs available, unrealized.com (and us along with it) switched hosts again, this time to besthost.net. Unfortunately, though they offered a much better deal on bandwidth and server space, and had all of the server apps we needed, they didnt offer subdomains. So after just one short release serpentine.unrealized.com was no more. We were back to plain old, boring unrealized.com/serpentine.
Somewhere between SBeta5 and SBeta6, Arteris left the group after a falling out over the future of Serpentine. Back down to just two members, we began cranking away on Beta6. Beta6 was our best release imo to date, because it showed that after 6 months in the scene, we were still able to hold our own, and with all of the weapons in, (the Aug was only a preview, and imo shouldn't have been left in the replacer tables) the end was in sight. We had introduced realistic ballistics to the gaming scene, and had pushed the emphasis finally from HopRunStrafeHaHaIKilledYou, to one of thinking, taking cover, reloading when you had time. In effect, what -we- thought an FPS should be like.
Unreal 220 was released a few weeks after SBeta6, and with it, broke Serpentine such that it was unplayable. Epic promised the community a new version, 221 which would fix 220's bugs, but would break compatibility again. We told our fans... 'Wait... What good will it do for us to release a 220 compatible version, if Epic's releasing 221 any time now, and it'll break again?' By February, patience was growing thin, and I started fixing Serpentine to function with 220, and again, the impending release of 221 was close, so I put Serpentine aside to wait for the release. By the middle of March, with 221 still very much vapourware, Latham and I decided that with Serpentine -><- close to being finished, we would go ahead and release a 220 version. After all... nobody besides a select few alphatesters had been able to play Serpentine since December. By this time, my disgust with the entire scene peaked, and I wanted out... no matter what. Over a feverpitched couple of days, I finished all of the changes for 220, fixed the Augs behaviour, re-implemented the sound syncing and such for the animations, and innumerable other changes. The results of that are what you see in SerpFinal. There are a few changes I made after sending it to the testers (splashes for brash, and cavitation trails for grenade shrapnel and such underwater), but rather than delay the release any longer, I am holding those features for the inevitable maintenance release when Epic finally does release the next version, which was to be called 221, and then 222, and now as of yesterday (as I write this) 223.
Every version of Unreal, has broken the behaviour of Serpentine in one manner or another, bot ai, walking while aimed, there are lots of different little kludges we've had to pull, a lot of inelegant code written, to make Serpentine play as it does, while staying within the limits of Unreal. It could use another complete code rewrite... but after ten months of continuous burn, ecstasy, depression, withdrawal, repeat and the way the Unreal Scene has gone, it is time for an end to it all.
Perhaps one day, I'll be enthused with Unreal again... but I doubt I'll start another project using it, unless it is with a commercially licensed copy of the engine, and financial backing. That will probably never happen, so don't hold your breath.
If any of you would like to reach me, my address is below... I probably won't answer any more email regarding Serpentine, no offense. Also any requests for new weapons, or continuation of Serpentine will be read amusedly, and then deleted. 8) Serpentine has been a learning experience for me, and has finally given me the confidence that I can see a design spec through to completion. Hopefully it won't soon be forgotten.
Aie!?! / Michael Flannery