Conflagration Propagation
by Kyzrati on 20110828 , under Progress, Video
Ready to roast some aliens? The newest additions are all about various ways to turn up the heat.
First, explosions of any kind can now be attached to props and entities, so UFO power sources, cyberdiscs and more can now explode. How to do a suicide run on a UFO:
Taking out a cyberdisc (2x2 units aren't yet implemented, but it blows up just the same):
Incendiary weapons now create fire which ignites terrain and entities. Here's a rocket launcher firing incendiary rockets, after which you can see the fire spread a little (it would spread much more in a wheat field). Burned terrain will produce varying amounts of smoke/dust based on its composition (also occurs when destroyed or when props fall from heights and smash into the ground).
Although not as effective as incendiary ammo for the job, HE weapons may of course cause some small fires, too:
Fire is naturally useful as a makeshift light source:
Smoke grenades make a much denser, longer-lasting patch of smoke (throwing not yet implemented--this is shot from a weapon):
Smoke affects FOV (kinda the point):
And for the grand finale, lets burn that house to the ground, just because we can (and then blow it up afterwards, because that's fun, too :)
On a side note, even though the videos were already cropped down to nothing, YouTube still felt compelled to compress them to nothing. Maybe next time I'll just record the entire window in HD instead. (I wish I could use screenshots instead, but the latest updates are best shown in videos...)
So here are the latest major additions:
Current state of the near-term TODO list:
First, explosions of any kind can now be attached to props and entities, so UFO power sources, cyberdiscs and more can now explode. How to do a suicide run on a UFO:
Taking out a cyberdisc (2x2 units aren't yet implemented, but it blows up just the same):
Incendiary weapons now create fire which ignites terrain and entities. Here's a rocket launcher firing incendiary rockets, after which you can see the fire spread a little (it would spread much more in a wheat field). Burned terrain will produce varying amounts of smoke/dust based on its composition (also occurs when destroyed or when props fall from heights and smash into the ground).
Although not as effective as incendiary ammo for the job, HE weapons may of course cause some small fires, too:
Fire is naturally useful as a makeshift light source:
Smoke grenades make a much denser, longer-lasting patch of smoke (throwing not yet implemented--this is shot from a weapon):
Smoke affects FOV (kinda the point):
And for the grand finale, lets burn that house to the ground, just because we can (and then blow it up afterwards, because that's fun, too :)
On a side note, even though the videos were already cropped down to nothing, YouTube still felt compelled to compress them to nothing. Maybe next time I'll just record the entire window in HD instead. (I wish I could use screenshots instead, but the latest updates are best shown in videos...)
So here are the latest major additions:
- Exploding Props & Entities
- Effects of incendiary weapons/explosions
- Fire burning/propagation and light emission
- Entities catch fire and burn
- Smoke results from fire and some weapon effects
- Smoke affects FOV and stuns units
- Materials can release varying degrees of smoke/dust when burned or destroyed
Current state of the near-term TODO list:
- Light-emitting items
- Variable animation speed
- Throwing
- Sound effects
- 2x2 units
- Reaction fire
Console-Sized Quantum Mechanics
by Kyzrati on 20110821 , under Video
Talk about an unexpected diversion!
With explosion damage calculations out of the way, next up was figuring out how to best animate them. One moment I'm scratching out some possibilities, then I jot down an innocuous little note along the lines of "need a particle system?" and ended up resting on the idea.
Next time back at my desk I'm writing a fully-featured particle engine, and the next and the next...
Never written one of these things before so it was a somewhat slow start, but once the pieces started coming together it became obvious this was the way to go. Particle engines are awesome!
I've opted for the heavily parameterized single-class model. Overall it's a pretty versatile system:
Internally, projectiles and explosion results are now a kind of particle, since integrating them into the system seems like an obvious choice.
Particle engines are pretty powerful, and I still don't know all the tricks to using this one, but in the coding process I designed several test effects and made a video where you can see them in action. Everything's kinda small at first, but it'll zoom in; and going fullscreen will help a lot since I recorded it in large format. (Note: This was my first-ever attempt at recording a video. Next time I'll try to keep the mic out of my mouth, promise!)
With explosion damage calculations out of the way, next up was figuring out how to best animate them. One moment I'm scratching out some possibilities, then I jot down an innocuous little note along the lines of "need a particle system?" and ended up resting on the idea.
Next time back at my desk I'm writing a fully-featured particle engine, and the next and the next...
Never written one of these things before so it was a somewhat slow start, but once the pieces started coming together it became obvious this was the way to go. Particle engines are awesome!
I've opted for the heavily parameterized single-class model. Overall it's a pretty versatile system:
- Particles make use of a wide range of dynamic variables:
- Age can be a constant, random, or dependent on distance from a point
- Speed can be static, constant, random, or follow a linear or sine function
- ASCII characters, if used, can be static, based on direction, or sourced from an animated list or a random set
- Color blending options (foreground/background) are more or less the same list available in libtcod:
- Add
- Subtract
- Multiply
- Scale
- Linear Interpolation
- Add Alpha
- Screen
- Color Dodge
- Color Burn
- Overlay
- Any color can be dynamic, since particles are able to mix multiple colors based on their current age or speed using 10 or so kinds of linear/sine functions
- Particles can also be emitters themselves, spawning other particles based on various triggers, rates, randomness, direction information, etc, so it's pretty easy to chain together complex effects
- All these parameters are loaded from a text file, and attaching a particle effect to a weapon/item is as easy as writing its name in the item text file.
Internally, projectiles and explosion results are now a kind of particle, since integrating them into the system seems like an obvious choice.
Particle engines are pretty powerful, and I still don't know all the tricks to using this one, but in the coding process I designed several test effects and made a video where you can see them in action. Everything's kinda small at first, but it'll zoom in; and going fullscreen will help a lot since I recorded it in large format. (Note: This was my first-ever attempt at recording a video. Next time I'll try to keep the mic out of my mouth, promise!)
Ka-boom!
by Kyzrati on 20110811 , under Screenshots
Okay, so I haven't added the sound system yet, but I can just hear it already as I test the explosion code. Everything seems to be working nicely--explosions are propagating damage as expected, terrain is blocking the force of explosions based on its stats...
No animation yet (that's coming up), but below is a shot of the results when a small rocket is fired into a hillside. The rocket hit the second level from the ground, and you can see how the grass is blown away and the dirt caves in.
On the right is some debugging info, showing the relative damage on each level (0, 1, 2). Unlike X-COM, explosions are in 3D, though I've made them a fair bit weaker in the third dimension, so they would technically be more of an elliptical shape if viewed from the side. Vertical explosion effects are completely optional, and can be deactivated to preserve the original X-COM explosion effects (same level only).
You may notice another difference from X-COM: blast patterns. X@COM uses a more rounded pattern, rather than the squarish patterns of X-COM, so your explosions will include a few extra squares. This difference is most noticeable for smaller blasts.
And now on to what I've been waiting for... Time to unleash some serious firepower on that house. Here it is, awaiting destruction, with roof view on (remember, it's two stories):
First we'll pull out our rocket launcher and smack the front door with a small rocket.
But that's not enough! Who has time to fire a few small rockets just to bring down a house? You desire a more effective way to level that thing... How about a large rocket fired through an open door (explosion in middle of first floor):
Still, they have a FENCE left! And someone even managed to survive! Okay, okay--here it comes... the Blaster Launcher!
Soldier-boy there singed his eyebrows with that one!
Let's check out the damage distribution (floor 0, 1, 2):
As you can see, hanging around anywhere outside a window, even in the air far away from ground zero, would be a bad idea when that bomb goes off.
The Sky is Falling
by Kyzrati on 20110808 , under Progress, Screenshots
It's been a little while since the last update as I wasted (spent?) a couple days fretting over how to code the interface windows. Eventually decided to put that off and continue with the mechanics--next on the list was gravity.
Gravity is optional for terrain, but obviously adds some fun tactical considerations.
Damage inflicted by/to falling objects is calculated based on mass, or relative mass in the case of multiple objects (obviously there are armor and other modifiers). Objects can displace each other as they fall, and most objects leave rubble if not completely destroyed--a battlefield littered with rubble is a little harder to traverse (higher TU cost). Terrain now also has a stability property which determines how likely it'll fall apart as it loses support from other connected terrain/objects (i.e., the more holes you shoot in a large section of wall/roof/floor, the more likely it is to come crashing down).
Here are the results of one test on a house (an exact replica of an actual X-COM house, btw),
where I opened up on it with my heavy plasma using unlimited TU and ammo :) At present, rubble is represented by semi-colons.
Apparently there were entities in that house after all! I only fired at the first floor walls, and you can see that half of the second floor collapsed, which brought down areas of the roof as well.
Next up: Explosions! Probably won't be so much rubble left after this next update...
Progress Report (copy of public changelog):
Gravity is optional for terrain, but obviously adds some fun tactical considerations.
Damage inflicted by/to falling objects is calculated based on mass, or relative mass in the case of multiple objects (obviously there are armor and other modifiers). Objects can displace each other as they fall, and most objects leave rubble if not completely destroyed--a battlefield littered with rubble is a little harder to traverse (higher TU cost). Terrain now also has a stability property which determines how likely it'll fall apart as it loses support from other connected terrain/objects (i.e., the more holes you shoot in a large section of wall/roof/floor, the more likely it is to come crashing down).
Here are the results of one test on a house (an exact replica of an actual X-COM house, btw),
where I opened up on it with my heavy plasma using unlimited TU and ammo :) At present, rubble is represented by semi-colons.
Apparently there were entities in that house after all! I only fired at the first floor walls, and you can see that half of the second floor collapsed, which brought down areas of the roof as well.
Next up: Explosions! Probably won't be so much rubble left after this next update...
Progress Report (copy of public changelog):
- Units spurt blood when taking critical wounds, and may trail some blood while moving (color of blood, if any, set by race)
- Added Material class to describe properties common among certain groups of terrain objects
- Added system of terrain degredation to be followed when terrain objects are destroyed
- Added terrain/object destruction handling
- Added [optional] effects of gravity on terrain/objects which have insufficient support from connected terrain
- Added mass property to units/terrain and relative damage calculations for impacts
- Added projectile collision handling for all object types
- Added dynamic updating for light/FOV maps due to terrain/obstruction changes
Heads Up
by Kyzrati on 20110729 , under Brainstorm
Recently I took a break from coding the game mechanics to do some research and interface brainstorming. I didn't really want to do this quite yet, but am afraid I'll get caught in the middle of coding some big chunk of mechanics right when a big project comes along at work. I can safely stop random ASCII art endeavors at any point...
The current state of the in-game HUD area is a mishmash of debugging info, so images seen below are just mockups. I played around with some ASCII drawing software over the past few days, trying PabloDraw, JavE5, WEPaint, and ASCII-paint. But by far the award for best RL interface prototyper goes to ASCIIPaint, even though it's somewhat feature-incomplete and (!) runs in flash...
Note: Colors/font don't mean a whole lot here, since I'm not limited to ASCIIPaint's 16 colors and will be using a custom font.
This first attempt was just trying to fit in everything I wanted in the HUD. Aside from everything you see in the original game, there are plenty of extras: "Intel" describes whatever is under your cursor, "Threats" gives a more detailed list of enemies in view, and "Reports" is a quick list of the most recent tactical events.
The reports should be concise yet easy to understand--they're basically symbolic SVO sentences. Here's the meaning of the lines in the mockup (top is most recent):
Obviously this HUD appears to the right of the map.
The initial attempt was definitely too cluttered...
Got rid of any unnecessary identifiers--it doesn't take long to figure out what everything does, and once you do button/control identifiers are wasted.
Using buttons instead of words in most places, saves space.
Most importantly, adding more information about the handheld items enables direct item-action selection without any intermediate window.
Rank might be better shown as a symbol (also clears up another line).
Soldier-related buttons probably look better if they don't take up quite so much space, as do the level view control buttons.
Still a long way to go with this (and it will be nice to see it with better colors), but it's getting closer to something I can implement for a test version at least.
The current state of the in-game HUD area is a mishmash of debugging info, so images seen below are just mockups. I played around with some ASCII drawing software over the past few days, trying PabloDraw, JavE5, WEPaint, and ASCII-paint. But by far the award for best RL interface prototyper goes to ASCIIPaint, even though it's somewhat feature-incomplete and (!) runs in flash...
Note: Colors/font don't mean a whole lot here, since I'm not limited to ASCIIPaint's 16 colors and will be using a custom font.
This first attempt was just trying to fit in everything I wanted in the HUD. Aside from everything you see in the original game, there are plenty of extras: "Intel" describes whatever is under your cursor, "Threats" gives a more detailed list of enemies in view, and "Reports" is a quick list of the most recent tactical events.
The reports should be concise yet easy to understand--they're basically symbolic SVO sentences. Here's the meaning of the lines in the mockup (top is most recent):
Sectoid #4 dies
J.Kyzrati shoots Sectoid #4 with laser rifle (burst shot)J.Kyzrati throws alien grenadeJ.Kyzrati primes alien grenadeMuton #2 fallsJ.Brenner diesMuton #2 shoots J.Brenner with plasma rifle (snap shot)J.Kyzrati no longer under alien mind controlJ.Kyzrati under alien mind controlJ.Kyzrati panics...Obviously this HUD appears to the right of the map.
The initial attempt was definitely too cluttered...
Got rid of any unnecessary identifiers--it doesn't take long to figure out what everything does, and once you do button/control identifiers are wasted.
Using buttons instead of words in most places, saves space.
Most importantly, adding more information about the handheld items enables direct item-action selection without any intermediate window.
Rank might be better shown as a symbol (also clears up another line).
Soldier-related buttons probably look better if they don't take up quite so much space, as do the level view control buttons.
Still a long way to go with this (and it will be nice to see it with better colors), but it's getting closer to something I can implement for a test version at least.
Death from Above
by Kyzrati on 20110725 , under Progress, Screenshots
Today was all about dishing out the pain! Projectiles now deal their respective damage, cause critical wounds, etc...
After that, went ahead and implemented gravity for entities so that shooting the flying ones out of the air has its proper effect. Killing/stunning a flying unit sends him crashing into the ground (or whatever happens to be below him, hopefully his friends).
Certain objects on the ground may cushion your fall, so you can intentionally jump off a roof into some bushes and hopefully not break anything (probably still a bad idea from the third floor). Or if you're breaching a house from the roof SWAT style, choosing a spot over a bed might be a good idea :)
Here's a screen of testing where units were jumping off the house like so many lemmings... splat!
Such a fall usually wouldn't kill outright, but for testing I had everyone's health dropped to 1, which also made stun tests significantly less of a hassle.
And by extension you get the offensive leap, AKA death from above. You can theoretically jump off a building and drop down on an alien's head--hopefully he'll take more damage than you (wear powered armor for the best effect!).
That gives me an idea for later: What about a quick dog-like alien ally that hangs around on roofs and does exactly that to your soldiers... Now that sounds like a scary terror unit.
Primary recent changes:
After that, went ahead and implemented gravity for entities so that shooting the flying ones out of the air has its proper effect. Killing/stunning a flying unit sends him crashing into the ground (or whatever happens to be below him, hopefully his friends).
Certain objects on the ground may cushion your fall, so you can intentionally jump off a roof into some bushes and hopefully not break anything (probably still a bad idea from the third floor). Or if you're breaching a house from the roof SWAT style, choosing a spot over a bed might be a good idea :)
Here's a screen of testing where units were jumping off the house like so many lemmings... splat!
Such a fall usually wouldn't kill outright, but for testing I had everyone's health dropped to 1, which also made stun tests significantly less of a hassle.
And by extension you get the offensive leap, AKA death from above. You can theoretically jump off a building and drop down on an alien's head--hopefully he'll take more damage than you (wear powered armor for the best effect!).
That gives me an idea for later: What about a quick dog-like alien ally that hangs around on roofs and does exactly that to your soldiers... Now that sounds like a scary terror unit.
Primary recent changes:
- Added damage effects of non-AOE projectile-entity impacts, taking into account armor, modifiers, etc.
- Added critical wound system
- Added body items for unconscious/dead entities
- Added handling for unit death/unconsciousness/revival
- Added faction FOV update on member status changes
- Added falling damage and handling for special cases while falling
- Added items to map display
A Different Point of View
by Kyzrati on 20110724 , under Screenshots
This being a 3D world, a direct overhead map is often just not sufficient to show whether your barrage of plasma is going to take off that alien's head, or just burn a hole in some tree.
Enter the side view.
It's not much to look at, but it serves its purpose as a functional firing aid to show the elevation of your LOF. The side view appears automatically above the top of the map whenever your LOF is displayed on the map, and shows the LOF elevation in every vertical column of cells it passes through. The higher the elevation, the brighter the line (though cell traversal distance still impacts the line's shading).
In the test map below, our soldier fresh off the Avenger already has an enemy in his sights. As shown in the side view (the shooter always appears in the bottom left), his bullet will pass over the fence and through the second story window to smack that alien. Assuming he hits, that is... [Some objects are depicted slightly differently in the side view--you can see the fence is now a '#'; bonus: entities can finally be represented by their proper '@'!]
However, his buddy here has spotted another enemy on the roof, but his line of fire is blocked by a tree... oops. Time for plan B! (I suppose that'll have to wait for when I can add explosives enough to just bring the entire house down :)
Enter the side view.
It's not much to look at, but it serves its purpose as a functional firing aid to show the elevation of your LOF. The side view appears automatically above the top of the map whenever your LOF is displayed on the map, and shows the LOF elevation in every vertical column of cells it passes through. The higher the elevation, the brighter the line (though cell traversal distance still impacts the line's shading).
In the test map below, our soldier fresh off the Avenger already has an enemy in his sights. As shown in the side view (the shooter always appears in the bottom left), his bullet will pass over the fence and through the second story window to smack that alien. Assuming he hits, that is... [Some objects are depicted slightly differently in the side view--you can see the fence is now a '#'; bonus: entities can finally be represented by their proper '@'!]
However, his buddy here has spotted another enemy on the roof, but his line of fire is blocked by a tree... oops. Time for plan B! (I suppose that'll have to wait for when I can add explosives enough to just bring the entire house down :)
X@COM Fans
Tags
- Brainstorm (8)
- Mods (6)
- Progress (26)
- Release (10)
- Screenshots (21)
- Video (10)














