Mod Ideas/Descent Mod
Idea
Intro
Well, I was starting to get hooked to those old [Descent] games again, and I thought about how great it would be if they looked better...
The basic idea is to re-create the interface and gameplay of the Descent games, starting with the player physics and interface and hopefully concluding with a fully featured TC with Robot AI, cool ship models and great Single & Multiplayer maps.
Why Descent?
Descent really was a milestone for me as a gamer... it required you to think in all three dimensions, keep track of what happened all around you. In today's ego shooters, you're mostly limited to front, back, sides and what people call Z-Axis. In Descent, there was no floor or ceiling. Think about what possibilities this offers for gameplay-oriented deathmatch mappers. Some may like it, some won't... but it'll definitely be original.
Terrain
Descent 3's missions partly took place on the planet surfaces, unlike its two predecessors which took place entirely indoors. I think the Unreal Engine provides excellent tools to convert this feature. Many fans of the first two titles disapproved this feature though, because it took away the element of being confined, and the constant bumping into walls – simply put, fighting outdoors was boring. But I can imagine some really cool Rebel Assault *cough* stlye canyon chases... could be fun.
Plan
- Create a mutator with the full 360° rotation physics stuff and an appropriate (deathmatch) testmap to go with it.
- Create ship models & skins, as well as weapons & effects
- Proceed customization (hud & other gametype adjustments) and add various features (headlights, guidebot, afterburner etc)
- TC-ifying phase:
- Throw in enemies: Create simple Descent-like robot AI, but cooler models.
- Add Gametypes: Singleplayer, Co-op, plus the UT standard stuff (CTF, DOM, BR... now that I think of it, BR Descent style sounds pretty neat )
- Add original elements that go beyond Descent's features.
This is just a rough overview of how I imagine the development of this mod to progress, ideally. Each number represents a design goal in its own, starting with a small mutator, then getting more content creators on board, and making it grow as large as it will. This also means that the probable design team could call it quits after each step if it loses interest, because each of these steps represents a "complete" release. Oh well. Anyone have comments on this?
Copyright violation?
Of course it is important to not violate any of Interplay's copyrights... So the design goal is to create something that carries on the spirit of Descent with a different style – however Descent-inspired it may be – not another Descent clone. That also includes the need for a different name. Yeah, you're NOT the only one who thinks "Descent Mod" is a little unimaginative.
Interested Contributors
- Luggage – Design, Code, LD, (Modeling), (2D art)
- Wormbo (with a really large "maybe" at this point) – weapon coding and maybe other coding stuff, too
- EntropicLqd – I can code, but I'll step forward for the GUI aspect of it - I don't have a lot of time due to real-life and the GUI is something that can be lived without till near the day of release. My maps generally suck badly but I'm willing to have a go . I need to finish Wormbo's FogMatch mutator first (nearly done honest - just can't get the bots right).
- DJPaul – Code.
- Jeeptrash – mappingness.
- Fr0sT aka AstralizeR – Maps (only if this goes big)
Comments?
Wormbo: This is the greates mod idea I've seen around this place for a long time. Especially the total 3D-ness of Descent I & II provides a lot of possibilities. I guess Descent is less based on movement than on awareness.
EntropicLqd: Hee hee - I've been thinking along the sames lines but I was waiting for a cool name to spring to mind. The sheer 3Dness of Descent was awesome.
Jeeptrash: Remember that Ender's-Game-big-zero-g-arena bunch of maps that were around for U1 and UT? Really the main reason they aren't much fun is the lack of real 3d movement. The 360 degree movement mutator is really the core of this whole idea... the 360 movement mutator and maybe a I'm-flying-a-small-ship-like-descent mutator could be kept seperate so the same muts could give you zero-g marines, descent, and some silly matrix wall walking options. Sounds like a lot of fun.
Spark: I liked Descent as well. Descent 2 was rather boring too me though (nothing new) and I never played Descent 3. I would be interested to help a bit with a Descent-like mod.
How exactly would the movement work? I believe that going for joysticks wouldn't be a good idea. I can't really remember how the mouse controls where. Moving around to look around is a no brainer... Forward and backward (i.e. w and s) to do exactly this. I believe that left and right (a and d) would be strafing, so the only important question is how to do roll. Two extra keys (q and e) or maybe a "hold this key and rotate your mouse) attempt?
Wormbo: When I played Descent I used a/s/d as forward, afterburner, reverse. q/e were the roll controls before I got a 3-axes joystick and strafing ("sliding") was bound to the joystick hat. Now I'd probably bind wasd for moving forward/back and strafe left/right while using a mouse. (up/down would be the jump/crouch keys, space/ctrl in my case) This still leaves room for the q/e roll keys since the translocator isn't part of the game. I believe a Descent mod should have joystick support, even though mouse look will probably be the prefered input method.
EntropicLqd: I used the numeric keypad to strafe around along with mouse-look. I would hold the right mouse button down to roll. I also dug out the concept piece I started to write before I decided it was getting a little complex. Might want to take some of the ideas - might not want to bother /Descent Mod (Quick Concept)
Spark: I think that one extra key for rolling (bRoll) would be the best solution because it would allow UT gamers to play the game without relearning and large reordering of their keys. Especially if only one firemode would be used, because then everyone would have one important key free for rolling (usually 2nd mouse or space). It should also be pretty straight forward to implement. Extending PlayerFlying and modifying aTurn to roll instead of turn when bRoll is held should do it.
Uh forget what I wrote about rotation inertia (deleted), of course that's not needed.
I just played a bit with state PlayerFlying and it really rocks, I forgot how much fun flying can be. I got Roll working (it's really that easy), but yaw and pitch don't take roll into account yet, but that shouldn't be difficult to solve (it's a good reason for me to learn more about rotator maths ).
Wormbo: Don't forget, that you can fire up to four things at the same time in Descent: the primary weapon (lasers, Gauss Cannon, Fusion Cannon, etc.), the secondary weapon (different kinds of rockets), flares and countermesures (several kinds of mines, the Gunboy or other stuff)
The PlayerFlying state is a good start, but I'm afraid this requires a bit more work. This little discussion I had with Luggage on IRC (before this page was created) states why:
[11:53:44] <Wormbo> the only difficult part would be the player physics, i.e. the ships [11:54:10] <Luggage> yeah [11:54:57] <Luggage> but free rotation should be possible, or not? I'd think so... [11:55:10] <Wormbo> the 20 to 25 weapons would be easy after having a solid base [11:55:18] <Luggage> hehe :) [11:55:47] <Wormbo> yeah, free rotation is possible, but requires vector or quaternion math instead of the rotators [11:55:55] <Luggage> I thought so [11:56:04] * Luggage = n00b coder :) [11:56:09] <Wormbo> :o) (...) [11:58:52] <Luggage> Wormbo... just an idea, but would you want to code that? :) [11:59:18] <Wormbo> hmm... probably not [11:59:30] <Wormbo> the weapons maybe [11:59:37] <DJPaul> why would it rquire special rotation magic? [11:59:43] <DJPaul> I'm not understanding [11:59:47] <Luggage> pity :) ok, I'll see if I can do it [12:00:27] <Wormbo> DJPaul: because Unreal's rotators are designed for players running around on the ground [12:00:31] <Luggage> DJP: I figure because you don't have that specified 'down' axis that stays the same all the time... or so [12:00:38] <Luggage> that's what I meant [12:00:57] <DJPaul> ...? [12:01:22] <Wormbo> for a Descent-like game it would be better to not have the Yaw-Pitch-Roll order, but Pitch-Yaw-Roll instead [12:02:19] <Luggage> Isn't it like... roll doesn't really happen in the FPS sty,e [12:02:36] <Luggage> gametype, but pitch is dependant of yaw or something? [12:03:11] <Wormbo> yes, first yaw is applied and the resulting rotation is modified by pitch, then by roll [12:03:31] <Luggage> ok, so that might result in a screwup :) [12:04:26] <Wormbo> guide a redeemer straight up or down in UT and you'll notice the complete crappyness of that system for making aircrafts ;) [12:04:47] <Luggage> hehe
Spark: Uh bummer. A good reason to try to understand quaternions, I always wanted to do that... We will see.
As for the four firing buttons, we don't need to copy everything from Descent, do we? But maybe it's not a problem even when keeping the secondary fire. Currently I have roll on middle mousebutton and it feels fine. Some defensive thing could well be fired with a less important key and flares are probably not neccessary at all. Flying around the tree of ages is awesome btw and Deck17 almost feels and sounds like a Descent map.
Luggage: Wow, what a massive amount of responses! If any of you coders is really serious about this, I'll gently pull back from still trying to find out where the player input stuff is done in UT2k3 code... you'll have that mutator working before I even found out how I install UDE properly
Regarding the rotation problem, the basic vector operation for player rotation would probably be something along the lines of this:
Two vectors (I was solely calculating with vectors here, no rotators involved) are definitely needed to determine ship rotation; Let's add the third axis for convenience. Once these are determined, player strafing can be handled by merely modifying the ship's position along the respective vector. Ship rotation then, independant from the world axis system, can be calculated by modifying the two vectors that lie in the plane of the occuring movement (i.e. for looking left, the side and front vector, the up vector isn't affected by this rotation movement) this way:
''Removed due to wrongness''
Considering strafing and movement, it should be handled via acceleration, like it is done in Descent.
A discussion with Silencer in IRC brought up the very important problem of replication. The player movement prediction would basically have to be created from scratch, since we're introducing a custom physics model. He had the same problem with his Bellicose Void mod. Or at least that's what I gathered.
Options are to either attempt it, or to keep it single player / botplay. Dumb robot AI shouldn't be a problem at all, Descent's robots acted pretty predictably. If we were to use the pathing system, it would need severe overhaul too...
All in all, I think the main focus at the moment should be creating working ship physics, and see what comes after.
Btw, I used to play descent with keyboard only: WSADFC for strafing, numpad for rotation. Later I got Forsaken, where using a mouse was the better choice... then it was still WSADFC for strafing, QE for banking and mouselook for pitch/yaw.
It is interesting btw how small changes in Forsakens physics created a really different feeling... for example:
- Bumping into walls doesn't damage you, and it bounces you back rather heavily compared to Descent.
- View rotation didn't use an acceleration system, or maybe the acceleration was too fast, thus not giving you the feeling of your ship/bike's mass inertia. Combined with the wall bouncing, that really takes away from the experience and makes it feel less realistic
On the other hand, Forsaken had really cool weapons and other features, like a cool nitro effect that widened your FOV to increase the sensation of speed, or the many different bikes and their advantages and tradebacks. And the cool voices of course
Oh well. It would be sooo cool to see this mod turn into reality!
LedZep: Wow how did i miss this page? Anyway i got great news for you Luggage, I've been working on a FreeSpace mod for quiet a while now (if you call a half assed "once a week" working ) and am glad to say that i got ALL the physics working! I have all you want, afterburner, energy(shields, weapons, engines), energy realocation and i have the ship Rolling about as if it was a plane, its really weird being able to roll in UT tell ya the truth... what i am left with now is the HUD and some minor replication problems. In the weapon's case i dont even have weapons, just projectiles which i read all the important properties from, and they work great. I am practically in an Almost-Beta state now, i was thinking about starting to look for a team but since i have no website skills whatsoever i am not sure of how i should go about settip up a team. i wish i had a nice and shiny site to link people to... Anyway if anyone is interested in helping me out please email me at LedZepperus@Yahoo.com or PMing me in the BU forums, i put a lot of work into this mod, the concept is almost complete, all it needs now is a team and we we would have people playing FreeSpace against eachother in no time.
By the way i am willing to share my code with anyone who wants it, i also have a sort of "Core" class with only basic functionallity such as rollling and directional/rotational acceleration, so on base of that people could also write Descent/Forsaken/whatever mods.
DJPaul: Sounds good, but have you solved the replication issue? Have you even tested for it? Did you manage to rework the vectors? If you've done everything, great; could you put your "Core" classes up for download, so we can looksy?
LedZep: Yep ive tested it and it seems to work online pretty well, i have to different replication systems though, cant deside between them. What i said about replication not being finished, i only ment some annoying weapon effects and things like that, nothing major, the physics seem to work great online, i will modify my code to make it a bit more readable and post it here once im done: KShip *edit* ok im done
Spark: Thanks a lot, that's great. I already thought about using KVehicle as a base, obviously this was the right thought. I will look for this now.
And Luggage, that's the stuff I deleted, the rotation inertia I mentioned. So I remembered correctly that Descend had this... However, when I played around with it it just felt so "right" without any inertia. Forsaken came to my mind, yes. I believe that Frontier (Elite 2) had similar controls, you could turn initially but the gravity wouldn't immediately turn your acceleration. I like this a lot. The free rotation helps to aim and makes the game more similar to UT deathmatch, while it still feels nice. However, not having instand rotation might reduce the efficiency of hitscan weapons and ping a bit which would be a good thing (not in everyone's mind of course), so I guess that both have it's pros.
Maybe it would be worth doing both. A "forsaken-like" mutator which simply let's you play UT2003 deathmatch, CTF, etc with ships and a more complex total conversion with real Descent like physics (and a gameplay which is more than just about fragging).
LedZep: Well I already have a mod coded, the "core" code i posted is just a little pinch of it, i have almost everything coded there, input, energy (for shield, weapons and engines), weapons, effects, shields, a class system (5 classes: scout, heavy and light fighter, and heavy and light bomber, with unique characteristics each), i even have a gametype done, its a team game where each team is given a "Mother Ship" and their objective is to destroy the enemy's one, where teams have to work together, bombers bombing the mother ship, while fighters protecting them, and scouts going deep into enemy lines using their Cloaking device. (Note, im not working on this anymore, I finished with it a long time ago, please stop emailing me)
Cheers guys! i hope to hear from you, and hopefully we could get this mod rolling soon
Foxpaw: Do you have a link to download it?
Spark: Sounds cool. I hope you find a good team. Did you think about using [moddb]? This looks like a good starting place for mods, with such an interesting concept and already working code maybe you can spark some attention there. You could even link newssites or interested people to this place. Maybe I could help you a bit, but only with code and this seems to be the least thing you need atm.
As for the Descent mod, I gave up using this vehicle code. Not saying it's the wrong idea, I don't know, it's probably still the best idea for more complex Descent like physics but this is getting over my head. Maybe if your spaceship is working really well this could also be used for indoor missions. However, I will concentrate on more straight forward forsaken-like physics now. Using karma vehicles just to get free rotation working can't be the right thing to do...
This means that I have to get this quaternion rotation stuff working, but I tried again and now it looks as if it would be almost working.
I will remove myself from the list of coders here and create a second page for this forsaken-like mutator, so it doesn't look as if I would want to "hijack" the Descent mod with Forsaken. If I get this working, maybe Descent-like rotation acceleration could be added as an alternative to using the KShip code. I will let luggage look at both and decide what's more appropriate then.
Spark: Yesterday my internet connection broke down and shortly later I got it working (quaternion rotation). The connection is still flakey, so I just wanted to leave a quick note before it goes down again.
Piglet: Just asking whats happening with the mod at the moment, having spent a good amount of time learning unreal script i would love to join in, and it would be good to know if its active, dormant or even (i hope not) extinct.
HarvesterUT I will just chime in here. I am the lead for a mod called Stellar Conflict, which shares similarities with this
descent-esque mod. Our vehicle class is starting to come along. We removed the limitations on pitch and can roll, yaw the vehicle
no problem. However we still have some issues with the Quaternion equations...but it is looking like it will be possible to create
a ship that can go in any direction and always have its own relative "down"......if you are interested in helping us on this mod please
read the other TC mod topic called Stellar Conflict
Foxpaw: I wouldn't even use the quaternions for this. As far as I can tell there's nothing they can do that vectors cannot. You can use GetAxes to keep your relative "down" and "sides" or you can use Vector << Rotation. I think I put those brackets the right way anyway.
Mychaeel: Quaternions are there to replace rotators, not vectors (see Quaternion Rotation for an explanation of "gimbal lock").
Foxpaw: Yes, but you can replace rotators with vectors as well - then just cast the vector rotation as a rotator when you assign it to an actors rotation/rotationrate/etc.
Mychaeel: Apart from being far less efficient than using quaternion calculations, you lose at least a rotator's Roll component when using vectors as an intermediate step.
Kyouryuu: I would be SO for this mod. You can put me down for doing mapping if you can come up with a good approach for the Descent physics and a ship.