Status On Other Alien Units?

Hello there. I'm Angry Lawyer, and on a rainy day a few days ago, I stumbled upon UFO2000 - and was blown back by the sheer AWESOME of it. Noticing that some of my favourite units hadn't been implemented (floaters, mainly), I decided to download the Source code and give a shot at sticking them in-game.

So, before I start doing anything drastic, what's the status on the other alien units? Would it be a waste of time for me to give a shot at implementing them, due to someone else on the team almost finishing them? Or, would my random attempts at fixing the weirdness that is units with odd animation numbers be appreciated?

A little about myself - I've been programming my whole live in various languages, and learnt C++ two years ago. I love challenging myself with various bits of code, and pitch in a little to help just about any project that strikes me as interesting. I'm not seeking a position on the team, but I just want to see certain parts implemented a little sooner than others, and what better way than doing it myself?

Okays, so you'd prefer them to be stored externally in LUA files, as opposed to the way that the Sectoid and Muton are hardcoded? I was thinking along the lines of finishing support for Snakemen, Floaters, and Ethereals more than anything - I assume if you want them external, then you'd want the Sectoids and Mutons also made external. Or do you want the extra default races hard-coded with the two existing ones?

As for the source code, Gurluas, I'm about a hundred times more proficient with C++ than I am with LUA, so I'd prefer to code them internally.

Also, bare in mind that I can't make any promises, and I can't make any huge time investments.

Another programmer? coolness. Hard coded Xcom aliens would be a good idea i think since the muton and sectoid ar already in there. this would mean that ppl wont be able to tamper with the original aliens.

Another programmer? coolness. Hard coded Xcom aliens would be a good idea i think since the muton and sectoid ar already in there. this would mean that ppl wont be able to tamper with the original aliens.

Problem is that if we hard code those, we are going to have trouble with a hardcoded / lua mix. New units dev should be open after compliation and in LUA. But I agree the X-com original units are hard coded in the game...So ???? (Serge, help here!). The issue Serge referred is not about adding units it's about improving the way the game uses the LUA for units. But of course new units could be a side-effect of that . I can only say : ask Serge cause he will have the big word on this but if you prefer C there's a lot of stuff on mantis to pick from.

But that's good news to know we got a new programmer who considers helping!

Another programmer? coolness. Hard coded Xcom aliens would be a good idea i think since the muton and sectoid ar already in there. this would mean that ppl wont be able to tamper with the original aliens.

Problem is that if we hard code those, we are going to have trouble with a hardcoded / lua mix. New units dev should be open after compliation and in LUA. But I agree the X-com original units are hard coded in the game...So ???? (Serge, help here!). The issue Serge referred is not about adding units it's about improving the way the game uses the LUA for units. But of course new units could be a side-effect of that . I can only say : ask Serge cause he will have the big word on this but if you prefer C there's a lot of stuff on mantis to pick from.

But that's good news to know we got a new programmer who considers helping!

Okay, here's what I have in mind:

I hardcode the default aliens.

I then start working on the LUA system and port all of the creatures across.

The first option shouldn't take too long, but as the second is a complete overhaul of the current system, it might take ages. Still, once you have the hard-code down for a creature, I think it's pretty easy to turn it into a LUA script. Although, LUA scripts, unless you do some sort of parity check, would have the problem of people fiddling with the points costs and armour ratings.

I'll keep you guys updated on my progress. I'll also try my best to add comments to the code, once I work out what each part does. And I'll take a look at TFTD stuff after I've finished with the UFO stuff

Snakemen are almost finished, just need to resolve an issue with a gap appearing between the torso and tail. Ethereals and Floaters shouldn't take long, as they both don't have seperate legs sprites and therefore won't have this problem appearing for me.

I'm reading all the forum threads but currently have no free time to add any comments. Explanations of why lua is preferred to c++ will follow later. Anyway adding more skins in c++ code is fine as long as they do not break anything else. Now waiting for patches ready for inclusion into the next beta

LUA external scripts are inherantly better because of a number of reasons - it's just going to take me a month or so before I understand LUA and read the source code thoroughly enough to figure out some of the solutions to problems that external scripts have - such as people cheating the points costs down/armour values up, and a system to check what unit scripts the opponent has so there aren't any problems.

As for the skins, I've finished all but the snakeman, which, due to the odd way it handles the two sections of its body, tends to get a gap between its shoulders and tail. Should be finished by tomorrow, unless something comes up.

LUA external scripts are inherantly better because of a number of reasons - it's just going to take me a month or so before I understand LUA and read the source code thoroughly enough to figure out some of the solutions to problems that external scripts have - such as people cheating the points costs down/armour values up, and a system to check what unit scripts the opponent has so there aren't any problems.

As for the skins, I've finished all but the snakeman, which, due to the odd way it handles the two sections of its body, tends to get a gap between its shoulders and tail. Should be finished by tomorrow, unless something comes up.

LUA external scripts are inherantly better because of a number of reasons - it's just going to take me a month or so before I understand LUA and read the source code thoroughly enough to figure out some of the solutions to problems that external scripts have - such as people cheating the points costs down/armour values up, and a system to check what unit scripts the opponent has so there aren't any problems.

Excellent And I also like that you are not trying to make 'some perfect system' at once. Only iterative develpment seems to work well in our case (open source project with a rather limited number of developers and their free time). Implementing something that works and replacing it with a better version later seems to be better than getting stuck in the designing stage

As for the skins, I've finished all but the snakeman, which, due to the odd way it handles the two sections of its body, tends to get a gap between its shoulders and tail. Should be finished by tomorrow, unless something comes up.

Fine. Do you know how to use SVN and make patches? Need any help or advice? Don't hesitate to ask in the case of any troubles. As for new unit skins, take special care about corpses (units dying or getting stunned), also test inventory pictures and units editor and game behaviour when x-com data files are not available.

And I have noticed that you are going to make terror units as well. But it would be a good idea to finish this initial iteration first. Anyway, that probably was an unnecessery comment, you seem to be knowing what you are doing quite well

However, not everyone has TFTD, and I need to figure out a way to make sure that you can only pick TFTD units when your opponent has it installed.

That's where scriptable extensions system comes in action First the game can determine a set of units which are installed and can be used. When starting the game, it can compare local and remote sets of available units and use only those which are available for both players. Units types not available for remote player can be highlighted red and the game should refuse to select them for the mission. Just look at the current weapon sets implementation (TFTD weapon set is supported by the game). A lot of concepts tried in it can be reused in units support code.

Tell you what - as a learning experience for me, I'll whip you up a LUA script for it after I've done my current tasks. However, I'm not sure if the current build will allow you to play with it online unless the opponent has it.

Serge, I'm sure I can figure out the Patch system, even though the actual setting up of the development environment took two days for me (I'm used to MSVC++ 2003, and just double-clicking a project file).

As an aside - some of the PCKs lack crouch animations, so unless someone draws some crouch anims, or I'm given the go-ahead to code in a plug to stop them crouching, the crouch animations have no visible difference from the standing ones.

And can anyone link me to a good SPK editor? I'd love to give the new units a quick inventory-view picture.

thats a question that ive always wanted answered - where did the crouch for the sectoid and muton come from - since i doubt the game had the crouch sprites , did somone make them?

By the looks of it, they were always there. None of the other aliens had them, but the mutons and sectoids have animations exactly matching that of the humans. Sadly, the AI never told them to crouch, I guess.

As an aside - some of the PCKs lack crouch animations, so unless someone draws some crouch anims, or I'm given the go-ahead to code in a plug to stop them crouching, the crouch animations have no visible difference from the standing ones.

Original x-com data files do not have frames for crouching aliens. Also UFO2000 initially did not support crouching for aliens and I considered it ok (just think about crouching as a special human ability similar to unique abilities of come aliens, ex. chrysalid ability to zombify ). But as Nail contributed some extra leg frames for sectoid and muton, making aliens crouch became possible.

And can anyone link me to a good SPK editor? I'd love to give the new units a quick inventory-view picture.

It is better to make inventory pictures in PNG format and forget about that old SPK stuff. I did not mean that inventory pictures for the new aliens are strictly required in the initial implementation, the game should just not crash because of their absence for example

Also here comes another issue: x-com graphics is proprietary and we should better avoid any use of it in the game at all cost. Currently sectoid and muton are clearly ripped pictures from the ufopaedia and they probably should be removed later. Extra legs graphics for mutons or other aliens is also a bit questionable too (but I might be overly paranoid ). The most safe way to live in the future is to treat all the x-com stuff as just a mod for ufo2000 and keep the core game engine clean from any proprietary content whenever possible.

About current units skins in lua files: that is currently a single unit type (code name 'chameleon'). Lua files just can describe different appearances for it, that was done to test animation description capabilities. A natural evolution of all this is to add real unit stats in lua files and make them not just appearances for a hardcoded fake 'chameleon' unit, but real units descriptions. So defining any extra appearance using lua files will not make the game incompatible with other clients and can probably make Gurluas2000 happy (but the remote client will see different skins for your units).

And one more notice about modding units: it is quite possible to implement custom inventory slots for extra units in the future (have some aliens without hands, or without backpack or using a completely different inventory grid layout). Resistances and vulnerabilities to different types of attacks is also an interesting thing that could be modded.

And one more benefit of having external descriptions of units - no need to recompile the executable to experiment with balance (stats, cost and other attributes tuning). If you track the history of ufo2000 project, we had lots of problems with weapons balance before. Everyone had his own opinion about what stats and cost each weapon should have with no way to experiment himself. So not having the c++ skills to recompile the game, most people had to convince developers to add these stats tweaks to the sources and build the next version (causing lots of complains from the other players who did not share the same opinion ).

Okays, then consider it done. Tonight, I'll submit the hardcoded units (which lack crouch animations) once they're finished, and I'll start loooking at a way to use LUA scripts in a similar way to weapon scripts.

And one more benefit of having external descriptions of units - no need to recompile the executable to experiment with balance (stats, cost and other attributes tuning). If you track the history of ufo2000 project, we had lots of problems with weapons balance before. Everyone had his own opinion about what stats and cost each weapon should have with no way to experiment himself. So not having the c++ skills to recompile the game, most people had to convince developers to add these stats tweaks to the sources and build the next version (causing lots of complains from the other players who did not share the same opinion ).

Yup, and adding the Floaters/Ethereals/Snakemen will bring its own discussion.

I've made already some posts on mantis regarding possible implementation of different stats other than armor. But those will probably be implemented in a not visible future yet. Which leaves the question of armor for Floaters/Snakemen/Ethereals (which is the only practical difference for units on the game right now). If one uses the stats from the original game (like it was for Sectoids/Mutons) then Floaters would have 8 frontal armor, Snakemen 20 and Ethereals 35 (assuming alien rank of Soldier). The aliens would be cheap (more units) but they would drop like flies. The alternative is to change their armor, like it was done on the beta for the Muton (upped from 20 to 75). But that will bring more discussions ahead...

Just bundling the patch file together now - I've estimated some armour values for the units. Snakemen have similar armour to blue human armour, as do Ethereals, whilst Floaters have lightly worse armour.