Possession (formerly Possession 2) - Release Date: July 18th!

Show off your games, demos and other (playable) creations.
Rickton
Party member
Posts: 128
Joined: Tue Mar 19, 2013 4:59 pm
Contact:

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

Post by Rickton »

Hmm. Yeah, I had a lot of trouble with the floor texture (actually, floor textures in general I'm finding to be the hardest part of doing the graphics for some reason). Guess I'll keep working on it.
This is definitely proof of the old advice that bringing in fresh eyes helps show problems you miss, though: I know the walls are walls because they're the same walls that are in a few other levels, so I didn't even consider that the walls and floors could be mixed up! Thanks for pointing it out, and for the words of encouragement.
Possession - Escape from the Nether Regions, my roguelike made in LÖVE for the 2013 7-Day Roguelike Challenge
And its sequel, simply called Possession , which is available on itch.io or Steam, and whose engine I've open-sourced!
Rickton
Party member
Posts: 128
Joined: Tue Mar 19, 2013 4:59 pm
Contact:

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

Post by Rickton »

Here's the new floor. I reduced the contrast between the borders of the "boards," got rid of the shading, and made them run north-south instead of east-west. I also added slight shading to the walls. Easier to differentiate now?
Attachments
tavernnewfloor.png
tavernnewfloor.png (42.12 KiB) Viewed 12290 times
Possession - Escape from the Nether Regions, my roguelike made in LÖVE for the 2013 7-Day Roguelike Challenge
And its sequel, simply called Possession , which is available on itch.io or Steam, and whose engine I've open-sourced!
Germanunkol
Party member
Posts: 712
Joined: Fri Jun 22, 2012 4:54 pm
Contact:

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

Post by Germanunkol »

Much better!

This time I immediately recognized what was going on.
trAInsported - Write AI to control your trains
Bandana (Dev blog) - Platformer featuring an awesome little ninja by Micha and me
GridCars - Our jam entry for LD31
Germanunkol.de
Rickton
Party member
Posts: 128
Joined: Tue Mar 19, 2013 4:59 pm
Contact:

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

Post by Rickton »

Crossposted from my site.

This post is a little more technical, but hopefully someone out there will find it useful if they're wondering how to face a similar issue.

Possession 2 features two basic types of creature behavior, dumb and smart (though there are a lot of complications that can go into them to make them act differently within the two categories, as touched on in a previous post *).
*Actually, I realized I never posted that one here, so I'll post it later, but you are more than welcome to read it on the link, obviously.

Dumb creatures are fairly simple, as you might expect. If they see an enemy, they move towards them in a straight line, if they can. If there are any obstacles blocking the way, they go around them using basic pathfinding. They will move through dangers that don't block movement (fire, lava, poison gas) without caring.

Intelligent creatures, like dumb ones, move in a straight line to their target if possible. The difference is that they pay attention to whether or not there are hazards in the way. Now, just avoiding hazards would be easy enough, I'd just have to set tiles with dangers on them to be "impassable" on their pathfinder, and they'd path around them like other obstacles. But I don't want them to avoid dangers all the time. If it's impossible (or extremely impractical) for them to move around a danger to get to their target, they should be able to go through them.

What I ended up doing was implementing what this article calls "Dijkstra maps."

Basically, the way it works, is that it takes a section of the map, and creates a grid on it. Each square on the grid is set to 10, except impassible squares like walls, which are ignored, and "target" squares (usually enemies), which are set to 0.

Image

(In this situation, the drunk tourist would actually just move in a semi-straight line -- depending on how drunk he is -- towards the ghost and wouldn't bother making a map, but I'm doing it as an easy example.)

Then, it loops through all the tiles, until each tile is one greater than the lowest tile it borders (ie all the tiles next to the ghost are 1, all the ones next to those are 2...)

Image
(Just realized I made a mistake, the tile in the upper-left should be 4, not 3.)

Then, the creature picks the tile it's touching with the lowest number (randomly choosing between them if there's a few it's touching).

This method is also used for creatures running away. Instead, they just pick the highest number they're touching. Fo example, imagine the image above stretches to the right a little. All those tiles to the right would be 4, and the drunk tourist would move to them if it was running away.

Things get a little more complicated if there are hazards involved. In that case, the hazard adds a number to the tile's value, depending on how dangerous the hazard itself is (which is set on a hazard-by-hazard basis when I make them). For example, the hazard value of fire is 10. Let's set a few fires next to the ghost:

Image

Those tiles, which would normally be 1, are now 11. Notice that this changes the values of the tiles next to them, too. The tourist now has fewer options to get to the ghost, plus its route is going to be a little longer.

It's all well and good to draw numbers on pictures, but how does it work in action? Let's take a look at another situation, and do the numbers by hand to see where the drunk adventurer should walk, sans any drunken stumbles into the fire (these pictures are all from the tavern level, and if you can't tell, there's a lot of drinking going on there):

Image

And what path does it take in the game?

Image

Nice!

As I mentioned before, different hazards have different danger values. Fire's is 10, which means it's super dangerous, but what if it was only 1?

Image

Now, it's possible the drunk adventurer will still take the same path...its values haven't changed. But, it could step into one of the fires marked 6, because they have the same value as the empty tile, and the creature randomly chooses between equal values. This would actually save it some time, but it doesn't actually know that because it only looks at the tiles next to it, it doesn't actually plan the whole path in advance (it only looks smart, it's not actually that smart).

Last theoretical situation in this longer-than-normal post...what if there's a fire in the doorway next to the ghost (setting fires back to 10)?

Image

The numbers are all higher, but it'll follow the same path as originally, even stepping into the fire at the end. This is what I was talking about way back in the beginning of the post...if they just can't avoid it, they will still walk through hazards.

And actually, right now, once it is next to the ghost, it won't even care that it's getting burned. It'll try to attack the ghost because attacking things has a higher priority than moving. I should probably change that if you're in a dangerous place like the middle of a raging inferno.
Last edited by Rickton on Fri Aug 01, 2014 5:36 pm, edited 1 time in total.
Possession - Escape from the Nether Regions, my roguelike made in LÖVE for the 2013 7-Day Roguelike Challenge
And its sequel, simply called Possession , which is available on itch.io or Steam, and whose engine I've open-sourced!
User avatar
undef
Party member
Posts: 438
Joined: Mon Jun 10, 2013 3:09 pm
Location: Berlin
Contact:

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

Post by undef »

Really nice post! Very detailed!
Thank you very much!
Dijkstra was a very smart man, and he wrote nice papers as well :)
twitter | steam | indieDB

Check out quadrant on Steam!
Rickton
Party member
Posts: 128
Joined: Tue Mar 19, 2013 4:59 pm
Contact:

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

Post by Rickton »

Crossposted from the official Possession 2 site.

Boss design in games can be difficult.

In the original Possession, bosses were pretty basic. They were creatures slightly stronger than most of the regular creatures on the level. None of them had any special abilities, except for the fact you couldn't possess them. I made them unpossessable for a few reasons: one, it'd be a pretty anticlimactic fight if you just possessed the boss as soon as it showed up then merrily went on your way. But also, it forces you to change your tactics somewhat. In most other fights in the game, you always have the option of possessing the enemy rather than trying to fight them (either right off the bat, or if you start losing). Making these strong creatures unpossessable meant that you had to actually fight them, hopefully using what you learned about your body's abilities during the rest of the level.

A lot of the bosses in Possession 2 are still pretty much the same: just a stronger enemy you can't possess. But now, some of them do have ranged attacks and special abilities, like regular creatures do (for example, the Bounty Hunter Imp from the first level has pistols it can shoot at you).

Some (but not all) of the special levels will have bosses that are pretty different, though.

Here's The Baron, the boss of the Swamps. He's actually pretty weak, but you have to make it through his zombie and skeleton bodyguards to actually fight him (and just wiping out the zombies beforehand won't work, new ones will sprout up as soon as the old ones are killed).
Image


Here's the Eldritch City's boss room. A single narrow walkway surrounded by pits. Surely it's just for decoration, nothing bad is going to happen here.
Image
When you try to go up the stairs, four tentacles pop out of the pits and start trying to lay the smack down on you. You have to defeat all of them to advance. The good thing is, they're confined to the pits, so you can run away and regroup more easily than most bosses if you need to. Just watch out to make sure they don't smack you into the pit or into a wall.

Image


The tavern doesn't even have any specific bosses. Instead, to leave the level you'll need to fight your way through a massive barroom brawl!
Image

Possession 2 now has an Indie DB page! If you have an account, follow it for updates!
Image
Possession - Escape from the Nether Regions, my roguelike made in LÖVE for the 2013 7-Day Roguelike Challenge
And its sequel, simply called Possession , which is available on itch.io or Steam, and whose engine I've open-sourced!
Rickton
Party member
Posts: 128
Joined: Tue Mar 19, 2013 4:59 pm
Contact:

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

Post by Rickton »

Crossposted from my site.

Well, still no progress on the "post every week" front.

I started working on Possession 2 in November of last year. I'd hoped to get it out in less than a year, but things aren't looking like that's going to happen. Of course, January through April I was working 50+ hours a week at my "real" jobs, so I can't really be too hard on myself about it. After all, if you look at it like that, it hasn't really been a year, right? (Excuses, excuses...)

Onto some good news, though, I think things are close to being ready for another public alpha release, to play around with some of the new creature and levels. This one will be much more "complete" than the previous ones, with no ASCII stand-ins in graphics mode and more things in their "final" places.

Image
On the "polish" front, I've made the main menu a lot more appealing. Graphical and ASCII versions for comparison. (The forum doesn't seem to let you change the size of imbedded images, so click it to see the full image if it doesn't fit in the post)

In the final game, you'll have to go through 10 levels (well, 11 if you count the final level) each time you play. I'd originally planned on adding 16 themed special levels, two each for levels 2-9, and the game would either pick one of the special levels or make it a "generic" level (which still has a lot of variety: each generic level has its own set of monsters, and they're randomly chosen to be wide-open caves or rooms-and-corridors, can have lava, water or chasms running through them, or can be a forest). Levels 1 and 10 will be special levels in their own right, but the same special level each time, though still randomly generated.

Unfortunately, to be able to get the game out sooner, I'm thinking I'm going to have to cut it back to one special level per level at first, for a total of 8. Of course, each level will also have their "generic" version too. Considering I've got five special levels "done" (at least before I get testing and feedback), that puts me significantly closer to that goal. I'd probably release the 8 other special levels later in a free update. The five levels I have finished are the Tombs, the Sewers, the Eldritch City, the Swamp, and the Tavern. They're all pretty different, and all have unique creatures, level features and bosses that go with them.

Images of special levels:
Image Image Image Image Image

I've broken it down to the major things I need to do before final beta testing. I'm sure I've forgotten something that I'll add to the list later, but for now I have:

-Final level and ending - There's going to be a different ending in Possession 2 than the first game, and I need to implement it and make the game winnable.
-Saving - Saving broke when I redid how some things are stored on the back end, and I need to fix it. I'd also like to add in support for multiple save games, which the original didn't have.
-Fixed Settings Screen - This screen hasn't been updated since Possession 1. I need to add in new settings and keybindings, and make the screen look better.
-High Score/Stats Screen - Mainly just need to make it look better. The game also tracks more stats across games (total possessions, ability use, etc.), so I need to set this screen up to show those.
-Monsters for all generic levels - Each level has at least 5 different monsters, so I need a total of 50 (there will be more monsters than 50 in the game, of course, since special levels have their own sets of creatures). I've finished enough to fill up 8 levels. This is what I've been focusing on most recently, and shouldn't take too long to knock out. I've got plenty of creature ideas, I just need to implement them.
-8 special levels - As said before, I've got 5 done, and have started on others, so more than halfway done on this front.
-Sounds - The sound system is in. Abilities can have sounds associated with them, and creatures have death and notice sounds. The issue now is finding sounds to go with them! I've made some progress, but this could end up being pretty time consuming depending on how easy/hard it is to find good sounds that match the tone of the game.

So, all in all, while I haven't made as much progress on the game as I'd have liked, progress is still being made. This is my first project of this scope, so I don't really feel too bad about underestimating how much it would take. From what I understand, everyone underestimates how long software development takes, even people who've done it for years. Cutting back on content is not something I'm terribly happy about, but I think it's what needed to be done at this point.

If you're interested, you can sign up to get exclusive info and news on Possession 2 before anyone else does, including first access to the new build!
Possession - Escape from the Nether Regions, my roguelike made in LÖVE for the 2013 7-Day Roguelike Challenge
And its sequel, simply called Possession , which is available on itch.io or Steam, and whose engine I've open-sourced!
User avatar
RonanZero
Citizen
Posts: 90
Joined: Mon Oct 20, 2014 3:33 am

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

Post by RonanZero »

"It looks like nothing was found at this location. Maybe try a search?" And it looked so good... :cry:
while true do end;
Rickton
Party member
Posts: 128
Joined: Tue Mar 19, 2013 4:59 pm
Contact:

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

Post by Rickton »

RonanZero wrote:"It looks like nothing was found at this location. Maybe try a search?" And it looked so good... :cry:
Which link didn't work? All the ones in the most recent post worked for me, but there are probably some older ones earlier in the thread that don't.
Possession - Escape from the Nether Regions, my roguelike made in LÖVE for the 2013 7-Day Roguelike Challenge
And its sequel, simply called Possession , which is available on itch.io or Steam, and whose engine I've open-sourced!
User avatar
RonanZero
Citizen
Posts: 90
Joined: Mon Oct 20, 2014 3:33 am

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

Post by RonanZero »

From the OP... Where did you get your link post?
while true do end;
Post Reply

Who is online

Users browsing this forum: No registered users and 13 guests