Page 5 of 10

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Fri Mar 06, 2015 3:35 pm
by Rickton
RonanZero wrote:From the OP... Where did you get your link post?
Oh jeez, I'm sorry, I realized I never replied to this. Basically, the preview version in the original post was basically the original Possession game, just with the possession mechanics tweaked a bit. I stopped hosting my game stuff on that site and moved it to a different site, and apparently that version got removed when I did that, and it's not really worth putting back up, there's been a huge amount of progress made since then. I'm working on a new preview version now that showcases what the game is actually like.

New post, crossposted from my site:

It's been almost five months since the last blog post, I guess we're long past due for another one.

Unfortunately, I haven't gotten nearly enough work done considering the amount of time that's passed. In truth, missing my one-year deadline kind of bummed me out for a while, and then the holidays came to distract.

Still, I have gotten quite a bit done. There's a new special level in, the Mines. It's a pretty dangerous place even aside from the monsters, since it's filled with rocket-powered minecarts, lava and explosive barrels.

Image
Dwarves apparently have no workplace safety laws.

I've also been doing a lot of work that is pretty unexciting (but necessary). Some UI and polish work, like scrollbars in the message log and monsterpedia.

Image
Try to contain your excitement.

The game has rudimentary mod support now, which is kind of exciting, but again, doesn't make for a great screenshot.

There are also sound and music systems implemented. I haven't decided what I want to do for the music yet (ambient noises? regular music? chiptune?) but I have found and implemented a lot of sounds for monsters and spells. They obviously can't show in a screenshot, but I might try and get some video up later.

For those of you who might be in the market for sound effects and are willing to pay a little bit, I really recommend Affordable Audio 4 Everyone. They sell packs of professional-quality sounds for way cheaper than most libraries out there. Plus, a portion of the proceeds go to charity so that's always nice. There are, of course, plenty of free sites with sound effects, but finding high-quality sounds on those can be hard, plus there's always some worry about whether or not the person uploading the sounds really had the rights to do it (I've heard some sounds on some sites tagged as "public domain" that I'm almost certain came from a commercial product).

I have had some good luck on Open Game Art. The quality there seems to be a little better than other free sites, and people who upload sounds they didn't make usually include links to the original so you can check it out and make sure it's legit.

I've also recently found Sweet Sound Effects. It's another free site, but the sounds are all made by one guy, so they should be legit. I haven't tried many of their sounds yet, but it seems like a good resource.

Finally, I've realized I really need to step up my marketing materials. I've put up a website for Possession 2, and I'm working on a trailer. I also need to buckle down and get an acceptable preview version out. Need to start getting the word out a little better so there's people who actually want to play the game once it comes out. I hate doing marketing stuff, but it's a necessary evil I guess.

Image

Anyway, I do have some blog posts already written and ready, so there won't be another four months until the next post this time.

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Fri Mar 06, 2015 4:37 pm
by CaptainMaelstrom
Wow. I checked out your recent screenshots and the game's website. Your game looks cool! I especially love the tentacles coming from the depths screenshot. I'm more of a rogue-like-like (Binding of Isaac, Rogue's Legacy) fan than a rogue-like fan. Still, what you have looks impressive. Congrats. :)

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Fri Mar 06, 2015 9:35 pm
by davisdude
And to think that just yesterday I thought "Whatever happened to that Possession game?" :)
Good work so far! Looking nice!

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Sat Mar 07, 2015 9:23 pm
by Rickton
CaptainMaelstrom wrote:Wow. I checked out your recent screenshots and the game's website. Your game looks cool! I especially love the tentacles coming from the depths screenshot. I'm more of a rogue-like-like (Binding of Isaac, Rogue's Legacy) fan than a rogue-like fan. Still, what you have looks impressive. Congrats. :)
Thanks! While I would consider it pretty close to a traditional roguelike, it's not very hardcore, and plays fairly quick. I hope you'll check it out once I get the preview build ready.
davisdude wrote:And to think that just yesterday I thought "Whatever happened to that Possession game?" :)
Good work so far! Looking nice!
Well, I'm glad someone was thinking about it without any prompting! I'm just not good at posting about it.

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Fri Mar 27, 2015 2:29 pm
by Rickton
Crossposted from my site.

The most recent feature I've added to the game is (are?) lit areas. They were a planned feature that got cut pretty early on, since it wasn't necessary, and I didn't want to waste time on it. But then I came up with an ability that required it, so I went ahead and put it in. Luckily, it didn't end up taking very long to do.

Basically, everything that can go in a level (features, effects and even creatures themselves) can potentially "cast light."

Image
An effect, feature and creature that cast light.

Any time anything that casts light is added to the map, it also gets added to a list of "light sources." The map now also has a "lightmap," which holds a true/false value for each tile that says whether it's lit or not. Every turn, every tile on the lightmap is set to unlit. The game then loops through all the light sources and checks every tile within each light source's "light distance" to see if it can draw a straight line to the tile without hitting any sight-blocking obstacles like walls (using Bresenham's line algorithm), and if it can, it sets it as lit.

Now, in terms of determining what creatures can see, every creature has a set sight radius. Anything that's within that range of them, they can see as long as there's nothing blocking the way. Now that I've added the lights, all I had to do is check to see if the tile is in range OR it's set as lit on the lightmap (it still also checks to see if anything is blocking the creature's line of sight, of course).

Here's an example. The player (currently possessing the zombie), can see a small radius around themselves. The torch on the left also illuminates a small area around itself, but some of the light is blocked on by the trees.

Image

For the player, every turn I check every tile in the map to see if they can see it. Not very efficient, and if I did this for every single creature it'd probably be pretty slow. The good news is, creatures generally don't care that much about the stuff in the levels. They just need to know about walls and floors, and (for the more intelligent ones), hazards. All this information is actually stored in a preset pathfinding map that all creatures have access to without actually having to have seen the tile (more info on how that works in a previous post). I guess we can assume that they live in the area so they know where everything is. The only thing they actually need to worry if they can "see" or not is other creatures.

So, all in all, it really was a lot less complicated to add than I thought it would be, which is really nice because usually when you add a new feature it turns out to be MORE complicated and take twice as long as you expected to code. And now I can have things that light up the levels like torches or candles, and you can see fire even if it's far away, and even glowing creatures that you can see in the dark.

Image
Forest fires are visible from quite a distance away.

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Sat Mar 28, 2015 1:14 pm
by qubodup
I can't find any download link. is this normal? Am I normal?

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Sat Mar 28, 2015 5:52 pm
by Rickton
There aren't any download versions, there were some old ones but they really don't show the state of the game anymore so I took them down. I'm working on getting a few levels totally polished for a preview release, should hopefully have that out soon. In the meantime you can play the original Possession!

As to whether or not you're normal, you'll have to figure that out for yourself. :)

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Tue Apr 14, 2015 2:35 pm
by Rickton
Crossposted from The Possession 2 devblog

Not all the creatures in the caves are mindless monsters that will attack until one of you is dead -- though some particularly stubborn, foolish or brave ones will. Most creatures in the game have a fear value that can cause them to run away if it gets too high.

When a creature gets damaged, its fear goes up by the % of health it lost compared to its max health. For example, if a creature has 50 max health, and gets hit for 10 damage, that's 20% of its total health, so its fear goes up by 20. Most creatures then have a set bravery value, and if their fear goes above that value, they'll run away. Here I've set the caretaker's bravery to 5 to show how this works:

Image

Certain abilities can increase fear (for example, there are banshees in the game who have a wail ability that causes fear), and having certain conditions (poisoned, cursed, etc.) can increase or decrease fear or bravery. Creatures that like to keep distance between them and their enemies (usually spellcasters or other ranged attackers) also have their fear increase when enemies are too close.

When a creature runs away, it uses the so-called "Dijkstra maps" I talked about earlier, but instead of moving to the tile that's closest to an enemy, they pick a tile that's the farthest away from them.

Image
Image
Imagine this, but in reverse.

Creatures' fear decreases by one every turn, if it's not near any enemies it decreases by two, and if it hasn't seen any enemies in a long time, it decreases by three. So, a creature that is afraid of you and runs away will eventually stop being afraid (even if it doesn't heal).

There are certain other things that increase fear, too, like seeing a nearby creature explode or get possessed. I wanted to implement a generic event system and have creatures react to those events, to have lots of things able to influence creatures' fear. Unfortunately, I've had to cut that feature out, because it's not necessary and it's just something that would add move dev time, which is really not what I need right now, and the things that increase fear are just hard-coded instead.

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Tue Jun 23, 2015 3:40 pm
by Rickton
Crossposted from the Possession 2 devblog on weirdfellows.com

So much for pre-written posts preventing me from going months without a post. I could make excuses, I could call myself a garbage human being, but whatever. It is what it is. It just worries me, because I know that marketing is really what determines how well your game's going to do, even more than how good the game itself is, and if I can't even do the bare minimum of that...

Well, anyway. I have been working, but as usual, not as quickly as I'd like. Part of that's because what I've been working on recently is probably the least fun part of any project: the settings screen.

Image
Awesome?

I'm actually kind of proud of the work I did (though I hated doing it at the time). The old game had all the settings and their locations hard coded, so moving them or adding new ones was a pain in the ass. This one stores each setting as an object that handles drawing itself, changing and being highlighted, and I can move them around or change them easily. The settings screen itself just has to know the order they're in, not exactly where they are.

Anyway, on more interesting note, this is the last big thing that needed to be done before I get a preview version out. I just need to semi-balance the levels that are going to be in the preview and make sure their creatures all have sounds and there aren't any major bugs. Then I'll be able to get a preview version out, hopefully along with a trailer, and I'll get the game up on Steam Greenlight. Then we'll see how bad my marketing skills really are...

Re: Possession 2 - A Roguelike made in LÖVE

Posted: Wed Jul 22, 2015 2:42 pm
by Rickton
Crossposted from the Possession 2 Devblog

In roguelikes, almost everything is usually trying to kill the player. It makes sense from a gameplay perspective, of course. Monsters are there to be obstacles standing between you and your goal. In the Possession games, you can even make an argument that makes sense from a narrative standpoint: people and animals can tell something's not right with something that's possessed.

That said, it can be interesting from a gameplay point of view (as well as making the game world feel more alive) by making some creatures hostile to each other, and some creatures not immediately try to kill the player as soon as they see them.

I've talked a little before about the fact that creatures have different "aggression" values, that some will attack on sight, while some will hang back unless you get too close.

In Possession 2, creatures can also have a "faction" assigned to them, as well as a list of enemy factions. If they see a creature that belongs to an enemy faction, they'll treat them like an enemy, exactly like they would if the creature was the player.

Image
The miners don't take kindly to protestors in their mines...

Players can use this to their advantage, though. If they possess a creature that belongs to a faction, other creatures in that faction won't be hostile to them! Well, unless they saw the possession happen...

There are three special factions: Chaos, which means they'll attack anyone, Passive, which means they won't attack anyone except creatures who attack them first, and Player Ally. If a creature is a player ally, they're treated like the player, and are hostile to everyone except other player allies (including the player themselves, of course), and members of their own faction.

Aside from the factions, there are some other things that can change the way creatures behave towards each other.

The first one is the fact that creatures can have "masters," who they will follow around and attack the enemies of. Creatures won't attack their master or their master's other followers, and will attack their master's enemies, regardless of their own faction.

Image
A bunch of cultists beat up their mummy master's enemy: the archeologist.

Creatures also maintain something that I call in the code a "shitlist." It's basically a list of known individual enemies. If they notice and become hostile to someone, they go on the shitlist. But even creatures to whom they'd normally be friendly can end up on the shitlist if they accidentally hit them with a ranged attack that missed its intended target, an attack that damages an area, or if they hit them while confused/drunk/mind controlled/getting knocked backwards/whatever. Players can use this to their advantage by causing enemies' attacks to hit each other, making them attack each other while the player sneaks past or waits until they're weaker to pick them off.

So, this is all well and good, but it does present a problem. If creatures on the other side of the map are attacking each other, then by the time the player gets there, they'll probably all have killed each other off, maybe leaving a few almost-dead stragglers. And while it's kind of cool to walk into a room and see the aftermath of recent fighting, it's not very challenging or fun if there's nothing left for you to fight.

Image
I bet there's a challenging room full of enemies to fight through this door! Oh...

The first thing I do is also a bonus for performance. Creatures far enough away (currently defined as "more than twice as far as the player's sight distance") don't run through their whole AI code. They just move randomly to a square they're touching. If they do happen to take damage (say they wander into lava, or step in a trap or in front of a moving mine cart), they only take 10% of the damage, rounded up. Of course, if something happens that would instakill them (getting knocked into a pit, for example), they'll die.

So this works well for far away creatures, but maybe a creature is physically near the player but the player would still have to travel a long distance to actually see them...they might be on the other side of a wall, but the nearest opening in the wall is halfway across the level. Or maybe they're just in the next room, but the player's hanging out in this room for a while, so we run into the same problem.

For creatures near the player, but that the player can't see, they'll only take half damage from everything. This could be exploitable (position yourself so a friendly creature can't be seen, but their enemy can...enemy takes full damage and ally only takes half!), so it actually only kicks in if you can't see the creature or their attacker.