Hard Light Productions Forums
Modding, Mission Design, and Coding => The Modding Workshop => Topic started by: Mongoose on October 03, 2008, 04:50:16 pm
-
Okay...so before I get started on what will most likely be a rather lengthy post, let me preface it by saying that I don't consider myself a modder in the least; in fact, I haven't really read this forum in a good year or two. I can't model, I can't texture, I can't tell a story...I really don't have any artistic ability at all. Why does all of this matter, you ask? Well, I don't want to give anyone the vastly misguided impression that I'm in the midst of working on some sort of vast total conversion, or anything like that. This whole affair started under the guise of "Mongoose opening up a table file for the first time and learning things that most people had within a week of first playing the game." Call it one big hypothetical, if you like.
We clear on this? Good. Now let me actually create a topic. :p
A few years back, I had become rather intrigued by Nuke and one or two other people discussing the creation of a Descent mod for FS. Descent's the only game series I love equally to FS, and D3 the only PC game I've ever really played multiplayer in on a regular basis. I remember Nuke talking about wanting to implement combat in mines, weapon powerups...the whole nine yards, really. Just the other day, I remembered this discussion, and I decided to do a search to see if anything had ever come out of it. I was able to come across the relevant threads, but as so many project ideas do, the originators had all sorts of other projects they were busy with, and nothing really came of it. To my surprise, I learned that there had been another mod attempt a few years before that, by Nico and one or two others, but it seemed as though nothing had come out of those attempts, either. (To date that thread, everyone in it was absolutely drooling over shots of Nico's brand-new Ezichiel model. :p) It was at this point that I started to think to myself, "What would it take to finally make something like this happen?"
Now, I was vaguely aware that there's a "Descent-style physics" cheat available, but I wanted to see if the same effects could be duplicated just through table editing. So, for the first time in several years of playing the games, I opened up a table file and started poking around. It took a lot of digging through the Wiki, but I soon figured out where the relevant fields in ships.tbl were. Before long, I had a .tbm for the Ulysses that had most of the relevant motions going on: a top reverse speed equal to the top forward speed, lateral thrusting enabled, the works. I still need to tweak it, since the damping values for motions like changing sliding direction are still much too high, but at least it feels remotely like a Descent ship. (I've never fooled around with Descent's tables, either, so I don't know if there's information that I can simply re-use for the conversion; if not, I'll just have to fire up D3 and get a feel for how the ship should handle.)
It was only after this that I finally decided to try that Descent-style cheat, and I quickly realized that even my amateurish effort was an improvement. While Descent ships don't have a whole lot of inertia in terms of changing direction, the cheat eliminates it entirely...and for some baffling reason, firing your afterburner brings the ship to a sudden screeching halt. Okay, so that idea was out from the beginning. It was also at this time that I decided to try fooling around with an old mod of the D3 player ships ported to FS; I had wanted to try to learn how to fool around with tables myself, but I also wanted to see if whoever had done this before me had made any big improvements. To my surprise, my attempt wound up being far more accurate. No offense to whoever created that pack to begin with, but the damping values for things like changing the direction of a slide and going from forward to reverse thrust were waaaay too strong to have any sort of Descent feel. I haven't tried the actual D3 models in-game yet, though I'm going under the assumption that those will work fine (though you know what they say about assumptions...).
So presumably, at this point, I can get a Pyro-GL that controls at least vaguely similar to how it does in D3 into a FS mission. (In fact, just to play around, I created a test mission with a single cargo container as a point of reference. Yes, that's about as complex as my FREDding gets. :p) Since then, I've been pondering to myself what the bare minimum requirements would be for a mod that can actually be considered legitimately "Descent-like." For the purposes of this discussion, let's right off the bat eliminate any ideas of what would be required for a singleplayer campaign: indoor mine models, terrain, robot models with specifically-scripted behaviors, a storyline, and the like. What would be the bare minimum required to pull off a multiplayer mod, where two people could hop into Pyros and shoot at each other in empty space, or around something like an Arcadia? I've been thinking about it for a few days, and here's what I've managed to come up with:
1) Controls: Like I said, even though I'm not quite at the point where I've managed to accurately capture Descent-style motion, I can at least see that point. There are two real issues that I can see, and both actually have more to do with joystick control than anything else. The first of these is "trichording" (or its lesser cousin, "bichording"), the speed boost incurred in the Descent games by sliding diagonally, moving forward/back, and angling your ship properly. It's really a concept of vector addition; bichording can get you a speed boost of 1.4 times your normal speed if you point your ship right, and trichording can take you all the way up to around 1.7. I'm not sure if this speed boost is occurring naturally in FS, but at least I know that multiple sliding directions are supported...on the keyboard. Somewhat to my surprise, I learned that FS2 doesn't seem to support more than a 4-way HAT switch, so my own personal preference of using the HAT to slide seems to be out the window. That's really more of a preference than anything else, but it does put a damper on my usual piloting abilities, since I've never developed a good sliding key configuration for Descent.
The other issue is one of throttle usage. Descent ships have equal forwards and backwards speeds, with a switch between top speeds in either direction occurring rapidly; it's part of what makes combat in that game so frenetic. Again, I can duplicate this effect just fine on the keyboard, but it's a whole other story on a joystick throttle, which is my usual way of playing the game. The absolute throttle control seems perpetually lower-bound by zero forward speed, and the relative throttle won't let you dip below that either. In the Descent games, the 50% position on a joystick throttle is defined as at rest, with full forward and reverse speed possible in either direction. Again, this comes down to a personal control preference issue on my part, since I think most Descenters use some sort of keyboard config for linear motion. I believe that taylor has said at some point in the past that big improvements to the whole control input system are part of his plan for the future, in the 3.7 realm of things, so it could be that both of these issues would have to sit tight until the day those improvements come.
(One additional tiny note: in Descent, it generally seems as though the afterburner’s effectiveness declines the longer it’s held down, reaching its minimum speed boost when it’s almost depleted. This led to the strategy of “pulsing” the afterburner to try to maintain that top speed. I’m not sure if that’s the sort of effect that could be easily replicated in-mission.)
2) Shield/Energy Usage: In the Descent series, your ship's entire "health" is defined by shield strength, which can value anywhere from 0 to 200 points. You start each level with a shield value of 100; picking up floating shield orb powerups increases your shield strength by a set value (which in the Descent series actually depends on the difficulty level you're playing at). There is no hull strength; once you get below 0 shields, you go kablooey. And unlike in FS, your shield doesn't recharge on its own. Even putting the idea of shield powerups aside for the moment, I'm assuming that effect could be pulled off with a very low hull strength and no shield energy...with one or two possible issues. First off, Descent ships have only one single spherical shield (though I think D1 and D2's ships actually used accurate hull-based damage, which is an option for D3 that's often used for LANs); can the FS engine forego the shield quadrant system in favor of a single segment? And secondly, is there a way of defining an exact numerical value for shield strength that could be displayed somewhere on the HUD?
The second question is one of energy. Much like shield strength, energy in the Descent series is a numerical value of 0 to 200 that can be augmented by power-ups (as well as energy refill stations, which only take you back up to 100). Energy is drained when firing most primary weapons, as well as for recharging the afterburner (and a few more esoteric functions, like firing flares and using a headlight, which are essentially useless to this conversation). However, unlike FS, both weapons and afterburners draw off a single energy bank, and that bank doesn't recharge at all. Is this sort of mechanic do-able with the current FS energy management system, and again, could one obtain a numerical energy value that'd be able to be displayed on the HUD?
3) Weapons: This is the one that'll probably be the kicker, since it's kind of the core element of Descent gameplay. Descent tends to have a somewhat wider variety of primary and secondary weapon types than FS, with an array of different mechanics. D2 doubled the amount of weapons that D1 had, while D3 replaced some of the earlier weapons with completely new ones. A few of the primary weapons, such as the lasers and Plasma Cannon, are essentially the same as things like the Subach and Prometheus; most of the secondary weapons consist of either dumbfire or heat-seeking missile types that would be relatively easy to manage as well. There are a few unique types that might be somewhat more difficult, though. I do know that ammo-based primaries are do-able, so presumably the chaingun-like Vulcan/Gauss/Vauss and the railgun-esque Mass Driver wouldn't be too bad (though the zoom function on the latter would probably be out, I'd bet). Not that they'd be much use in empty space, but certain of the secondaries, such as the Smart/Cyclone/Earthshaker Missiles, spawn secondary munitions either on-impact or after a certain time, which seems easy enough. (The proximity bombs and smart mines of the first two Descents might be slightly harder; D3 had a few more esoteric countermeasures, such as the turret-like Gunboy, but those were never used all that much anyway due to lag issues.) However, then there are the much more esoteric weapons...like the flame-throwing Napalm cannon (also ammo-based) and its cousin the Napalm Missile, the bouncing Phoenix (again, not much use in space), the homing energy beam of the Omega (which had its own energy reserve in D2 that drained off the ship's energy), the rotating Spreadfire/Helix Cannons, and the black-hole-esque Blackshark. And by far most important of all, you have the chargeable Fusion Cannon, which is pretty much the defining Descent series primary. As you can see, there's a whole lot to work with there, and I have no idea how much is even remotely possible in the FS2 engine.
However, all of that might not even be the largest weapons issue. You see, in the Descent series, the player could acquire new primary and secondary weapons (as well as ammo pick-ups for ballistic primaries) by flying through power-ups, just like the shield and energy power-ups. Perhaps most troublesome, the Descent ships can carry far more weapons at once than any FS ship; the original Descent game featured five primaries and five secondaries that could be selected via the 1-0 keys, while D2 and D3 doubled that to 10 of each, with a second keypress on the number keys selecting the "alternate version" of each weapon. (There was also a configurable weapon auto-select function that would allow the player to define which weapons would override others if picked up.) There are a few ideas I've had on how to work around this in the FS realm. In the simplest case, one could just ignore the Descent mechanics and force pilots into picking out two or three primaries/secondaries before starting a multiplayer match. Another method would be to have permanent floating power-up models that, when flown over, would simply replace whatever weapon the player was currently holding. Obviously, the most complex (and probably most unfeasible) method would be to try to duplicate Descent’s system of having many weapons at once that could be freely selected. There’s also the fact that, when a ship in Descent was destroyed, it would spew out all of the primaries and missiles it was carrying as power-ups (as well as some shields/energy); I’d imagine that that might create issues in and of itself.
This post wound up being even more obscenely long than I had first planned, so I appreciate anyone who managed to read through the whole thing. Those three areas are the main points I could come up with at the moment that would be necessary for implementing the simplest sort of Descent mod. So…what do I want from you? All I would ask is that those of you who have a much better grasp on the engine’s modding capabilities could peruse through what I’ve written and lend a hand at figuring out which items would be easily do-able now, which would require some more involved FREDding/scripting, and which would go up to the level of fairly major code changes. Like I said at the outset, I’m no modder myself, but I would like to get at least some sort of grasp on how feasible such a mod would be, and if there were any elements of it that I’d feel confident enough to attempt to enact. At the very least, what I think I will be able to do is provide ship table files that re-create the handing of a Descent-style ship in FS to the best of my ability. And who knows…if anyone else is interested in tackling some other segment of such a mod, maybe we can see where things progress from there. Thanks again for reading. :)
-
I'm gonna be the first to jump in and shout 'LUA SCRIPTING!!!'
There. Now it's done.
-
I really wish you hadn't. :p
-
I was thinking more on the lines of shouting "Clift Notes!" :lol:
-
Yeeeah...I kind of have a thing with writing pages of details to get across a simple point. Let me see if I can't sum it up better:
--I was fooling around with table files for the first time ever, and I managed to get a ship setup that mostly replicates the feel of the Descent ships. If these old converted models I have lying around actually work, I can presumably get all of the D3 player ships into FS2.
--I was thinking about what elements of Descent's gameplay would be required to create the most basic-level Descent multiplayer mod in FS2.
--*insert long descriptions about concepts from the Descent series, such as shields/energy and weapons*
--I'm no modder myself, and I'm also not looking for someone else to do all of this for me. I'd just like to know how much of this stuff is possible from a feasibility standpoint, and what sort of level of work it would require to pull off. If there are elements of it that I think I'd be capable of learning how to do, I'd definitely try to do so to get them implemented.
Hmm...I guess that was better than four pages of text. :p
-
If it's not in a mine/station with tunnels, it's not Descent, IMHO
-
Pssh, if it's not the Pyro-GX it's not Descent.
Cheap ass Pyro-GL...
-
If it's not in a mine/station with tunnels, it's not Descent, IMHO
Well, yes, obviously some sort of indoor environment would be the ultimate ideal for any serious Descent mod, but the whole point of this thread was to try to get a sense of what sort of bare-minimum mechanics would be absolutely necessary for any attempt at the general idea, mechanics that would have to be implemented long before one started worrying about flying around a mine. If there's one thing I've learned from watching mod ideas around here, it's that trying to bite off more than you can chew usually leads to a quick death. Starting with something extremely basic, like getting the ships to move right, and then working up from there can make things actually happen.
I was kind of hoping I'd find out that at least one tiny aspect of what I mentioned could be answered by something as simple as, "Oh yeah, you could just tweak table X, and that'd work." I'm starting to think that I'll have to poke around until I figure that out on my own. :p
-
If it's not in a mine/station with tunnels, it's not Descent, IMHO
Okay, I got it.
Massive space stations (Think Death Star sized) in which you infilitrate the superstructres of the stations and fire a Mega Missile down a fusion vent into the reactor core.
Zing.
-
Gee, if only there were already a game out that had full Descent-style weapons, ships, physics, arenas, missions, and robots in it, with full voice and music. Now that would be cool!
I'm kidding. I think it would be more productive to see what we can learn from Descent and bring into the FS engine, instead of trying to recreate the feel. They're fundamentally different games. I for one would like to see 'fusion cannon' primaries that can be charged for greater power.
-
Hehe, point taken. The thing is, unless you count the D1/2 open-source projects, which are fundamentally limited by the age of the source material they're working with, there really isn't a whole lot of potential for advancement in the Descent community. The D3 modding world in particular has all but died off over the past year or two. With the myriad of new features that the SCP has made possible, I've found myself fantasizing about how the Descent mechanic might be brought into this engine. I'm not entirely convinced that the games are really all that incompatible, either; some features of the ship mechanics are already being used by the Fringespace mod, and one or two mods have done work with implementing terrain. Even "mines" seem rather feasible, at least from the multiplayer standpoint (though I imagine they'd wreak havoc with the AI system). Take the Karnak installation model, for instance; put the player starts inside of it, make it invulnerable, and voila! Instant mine.
I guess the bottom line is that I'm going to have to get started on some learning and see just what is feasible in this engine in terms of incorporating at least a few aspects of the Descent universe. There is one simple question out of everything I typed out there that I wouldn't know where to look for the answer, though. Is the engine bound to the four-quadrant shield model, or is there a way to tweak that into a single shield unit?
-
Well... One way would be to use for example lua scripting to equalize shield quadrants every frame. But that wouldn't be the same as for making ships have just a single shield. However it should be possible to make it option to the ships.tbl and to have real single shield unit shields. Just requires some coding and that the current code freeze is lifted
-
Wasn't a single shield code implemented some time ago?
I recall there being something like that.
Or was it a script?
-
I'll have to do some digging and see if I can find any info on either of those possibilities. In the meantime, I found out that those converted D3 models work in-game, in all of their low-poly glory. I have no idea who put this ships pack together in the first place, or what they used to convert the models. I did find an .oof (D3's model format) to .3ds converter buried in PlanetDescent's file archives that might have done the job, though I'm sure they required some cleaning-up afterwards. If it actually does what it says, I'd love to be able to get the 1500-poly Pyro-GX model that someone created for D3 in-game; it'd definitely be a whole lot better than the D3 model alternatives. I also did some poking around the D3 table files, but I'll have to find out from someone in the community if there's a good resource that describes all of the fields. At least some of the ship data seems to be in relative terms, so I'd have to translate that to a FS equivalent if I wanted to preserve accuracy.
The one thing I'm not sure of on these converted models is exactly where the firing points are located. I'm guessing one would probably need three or four primary slots, depending on how much one wanted to implement; one paired set would take care of the general energy-based weapons, a separate set could handle quad lasers, a single center-mounted slot would take care of the Vulcan-type primaries, and a rear-facing slot might be useful if anyone wanted to go all-out with primaries. From what I remember, a paired slot and a single center slot would take care of all of the secondaries.
-
I'd love to be able to get the 1500-poly Pyro-GX model that someone created for D3 in-game; it'd definitely be a whole lot better than the D3 model alternatives.
Well of course, you wouldn't be flying a Pyro-GL anymore. ;7
-
Okay, we get it, you don't like the D3 ships. Chill. :p
The more I think about this whole idea, the more I feel like maybe I really should learn enough to try to make it a reality myself. It's high time I figured out how to mod at least one of the games that I play. I'm not going to promise anything at all, but given enough time and effort, maybe I'll wind up with something that's worthy of being released in some form. I have rudimentary models to work with and table values to tweak; beyond that, maybe I'll see if I can't get a weapon or two in-game.
-
In the meantime, I found out that those converted D3 models work in-game, in all of their low-poly glory. I have no idea who put this ships pack together in the first place, or what they used to convert the models. I did find an .oof (D3's model format) to .3ds converter buried in PlanetDescent's file archives that might have done the job, though I'm sure they required some cleaning-up afterwards.
That would be me. :D I've always wanted the Descent ships in Freespace. The biggest problem was consolidating all of those little textures onto one big one for each ship. Cleaning up was intense; LODs, shields, debris, etc. Still, they turned out pretty good.
-
Ah, cool. I've had that archive sitting around for so long, I'd long since forgotten exactly where it came from. :)
-
Isn't there fundamental difference between Descent and Freespace? The AI? I played Descent a few times, not sure if it was the first or whatever. But, okay, the AI in freespace is in a huge cosmic void of nothingness, but they still can't help running into every damn thing in sight. How would that same AI function in an enclosed environment???
-
Isn't there fundamental difference between Descent and Freespace? The AI? I played Descent a few times, not sure if it was the first or whatever. But, okay, the AI in freespace is in a huge cosmic void of nothingness, but they still can't help running into every damn thing in sight. How would that same AI function in an enclosed environment???
Not very well, most likely.
*imagines drones flying into a corner, getting stuck, and blowing itself up*
-
Isn't there fundamental difference between Descent and Freespace? The AI? I played Descent a few times, not sure if it was the first or whatever. But, okay, the AI in freespace is in a huge cosmic void of nothingness, but they still can't help running into every damn thing in sight. How would that same AI function in an enclosed environment???
...I kind of feel like I've mentioned at least two or three times in here that this whole idea is based around a multiplayer concept. :p All I'd really like to accomplish is to get as many of the Descent ship and weapon functions as are feasible into the FS environment and work my way from there. At the very most, I'd love to see two people duking it out in Pyros in some sort of indoor environment. That's about all I'm expecting out of myself, or out of anyone who would want to take up a project like this. If there's someone out there who's crazy enough to take on the no-doubt monumental, and likely utterly impossible, task of finagling the FS AI system into working in an indoor environment, all the more power to them, but I'm not even going to propose that idea, much less foist it upon anyone.
-
...I kind of feel like I've mentioned at least two or three times in here that this whole idea is based around a multiplayer concept. :p All I'd really like to accomplish is to get as many of the Descent ship and weapon functions as are feasible into the FS environment and work my way from there. At the very most, I'd love to see two people duking it out in Pyros in some sort of indoor environment. That's about all I'm expecting out of myself, or out of anyone who would want to take up a project like this.
Oh, my bad. I skipped the whole four page post and missed that detail in the other little post. ;)
Might be cool to get some multi-going if there's demand for it. I wouldn't mind some indoor FS combat actually . . . might be a bit hard to pull off though. I actually had thought about trying some sort of indoor combat in FS myself, but my idea wasn't really worth the effort I think. Plus, in general, I have about 10 ideas for everyone that gets finished. I think it's easier to continually work on a myriad of ideas rather than actually put the finishing touches on any one of them.
-
I knew that mega-post was a bad idea as soon as I saw how long it turned out. :p
This is the first idea I've acted on in any real sense (hell, it's probably my first idea period), so I'm kind of curious as to how far I'll go with it. I was skimming the Wiki's scripting sections earlier, and it doesn't like the huge evil edifice I thought it was; I might have to look into that in more detail to see if it would be of use in the shields/energy department. My main point of thought right now is what I want to attempt next. I know that the models Galemp converted work in-game, and I have a table entry for the Pyro-GL that feels at least mostly right. So do I try to get the other two or three ships in-game and get them reasonably balanced, or do I try to tinker around with a shield/energy system, or do I move on to seeing if the resources for D3's weapons work in-game in FS2? Choices...
(Oh, there is one tiny question I have. I noticed that the ships table doesn't have "reverse acceleration/deceleration" entries. I can't really tell what's controlling the current rate of reverse acceleration in my table file, since it seems to be a different rate than that which is set for forward acceleration. Anyone have any idea how this is determined, or if it's determined at all?)
-
Descent to FreeSpace! :D
-
im pretty sure all the descent 1 and 2 weapons could be replicated with existing table tags and/or scripting weapons like the spreadfire and helix could be done with lua (look for shots of a crtain type of weapon and spawn the rest with script based on the original's position and direction), gatling type weapons can be done with ballistics tags, phoenix would be pretty trickey. most other weapons wouldnt need much but existing table tags. since i didnt like d3 all that much (the lack of destructible lights, and the cuteness of the robots took away from the dank dark feel of the older mines), im not familiar as with the weapons there. the flamethrower could maybe be done with lua. and weapon pickups / selections, well im sure theres ways around that if it means scripting the whole thing from scratch.
the main problem is levels, they would have to be very large, very complex pof files. since freespace is not an fps engine, it does not have the lighting or portal systems needed to make good looking, fast running levels. you might be able to accomplish something similar to descent 1 or 2, but nothing like descent 3 (which i thought had really ugly levels). that descent 3 mod for doom 3, into cerberon i think, had some really awesome levels, what d3 should have had. lighting could be possibly generated with a high end modeling program like max, which would allow you to 'bake' your shading right into the textures. however this means youre allowed zero reusage of uv spave making texturing a nightmare. also the lighting would not be dynamic. no shooting out lights like you had in descent 2 (which made it the coolest decent out of all 3). portals (not the kind you fing in prey or hl games), are what make fps games fast while looking totally awesome. they essentially define contiguous spaces which should be rendered all at once. anything not in the space you are in is culled from the render lists and textures for adjacent rooms are precached (freespace precaches everything at mission start so the quality of the environment must be reduced). freespace does not have this. so its impossible to make good looking levels. if perhaps it becomes possible to create hardware lights from scripting, well maybe something can be done. things like doors, switches, destructable objects could all be done. also the speed/quality of collision detection with the level may be an issue.
as far as ships and controls go, already there, just a matter of tweaking stuff till the physics feel right. really low damp and rotdamp values and slower speeds would work well. someone, i forget who, converted the d3 player ships to pof and i used them in a test of flying in a level (which i slapped together with a quake level editor and ran through several conversions). combat was aqward, colision detection glitchy, and ai didnt know what to do with itself, just kept running into walls. i slapped together a few descent weapons for nostalgia, but it just wasnt the same. into cerberon is more fun.