Temple of The Roguelike Forums

Development => Programming => Topic started by: halvorg on July 02, 2013, 01:23:26 PM

Title: Making a one dimensional roguelike interesting.
Post by: halvorg on July 02, 2013, 01:23:26 PM
Hey, first post!

I'm learning a new programming language and figured I'd make a roguelike game, I have zero ambitions for success or whatever.

As I am new at this I decided to make it one dimensional, by that I mean that the player can only move left or right, not up and down. A simple screenshot to illustrate:
(http://i.imgur.com/9YoF1zH.png)
(seen from the side)

So obviously gameplay can get stale to say the least with no room to manouver, but I have some ideas to make more out of it than simply holding num 6 until you win : ).

The ideas I've tossed around in my head are as follows, nothing is implemented yet because I've worked on the "engine" if you can call it that.

Monsters must be able to stack.
Diverse set of weapons with various effects, i.e. spears can pierce through several tiles, axes can hit several enemies on one tile etc.
Minimum range for spells and ranged attacks.
Very unforgiving side scrolling, the game only wraps to the right.
Possible ability to leap over floor tiles, converting floor tiles to lava etc.
Usual features like doors,variable light radii or view distance and gear/levels/classes/races etc.

So what I hope is to get some ideas from you guys on how to make the gameplay slightly interesting!

(Code is here if anyone is curious, nothing to look at really. https://github.com/halvorgb/axisofX)
Title: Re: Making a one dimensional roguelike interesting.
Post by: PerspectivDesigns on July 02, 2013, 02:51:30 PM
The Stacking combined with different types of weapons sounds really interesting! My advice is to make sure you keep it 1D. That's a really interesting gimmick you should hang onto!
Title: Re: Making a one dimensional roguelike interesting.
Post by: JohnK on July 02, 2013, 03:17:29 PM
One thing that could spice it up is giving the player several turns at once (maybe an action point system so you can make support abilities cheap) and giving them plenty of powers like pulls, pushs, teleports, area attacks and traps. The game becomes about controlling your enemies so they are concentrated in your damaging areas while you remain out of their reach.
Title: Re: Making a one dimensional roguelike interesting.
Post by: Vanguard on July 02, 2013, 03:46:50 PM
What I would do is design the combat system so drawn out battles of attrition are very favorable to the player (say, by giving the player better speed and ranged abilities than enemies have) but I'd also put the player on a strict time limit, so they'd have to decide whether to take their time against enemies and minimize health loss or fight aggressively to beat the clock.

I think it would be more exciting to enforce the time limit by having the screen automatically scroll like you see in some of the 2d Mario games, or by having the player flee from an invincible pursuer rather than using a traditional hunger system.

Another idea that might make it a little more interesting would be to give the player the ability to easily bypass most enemies (they can jump over them or cast teleport or whatever) but also make it highly advantageous to kill as many enemies as possible, because they drop useful powerups, or because they give a lot of experience and player levels up very quickly, or because there's some negative long term consequence to skipping enemies.
Title: Re: Making a one dimensional roguelike interesting.
Post by: requerent on July 02, 2013, 08:19:22 PM
AHH!!! YOU STOLE MY IDEA!


I've had a 1D roguelike in draft for a while.


Gameplay will be interested based upon how you use distance and how you make map features meaningful.


Spells that allow you to push/pull enemies, build walls, set explosive tiles- etc, will all make things somewhat interesting.

However, the real advantage of 1D is how easy and cheap (resource-wise) it is to implement atrociously powerful AI. I would keep the number of fodder enemies low and focus on interesting combinations of enemies with cool powers.
Title: Re: Making a one dimensional roguelike interesting.
Post by: Lemony Lime on July 03, 2013, 02:07:10 AM
I've wanted to make a 1D game for a long time too, haha.
Title: Re: Making a one dimensional roguelike interesting.
Post by: halvorg on July 03, 2013, 03:04:42 AM
Many good ideas here.

I'll sit down sometime this week to flesh out the design, thanks for the help!
Title: Re: Making a one dimensional roguelike interesting.
Post by: Vanguard on July 03, 2013, 03:47:44 AM
Good luck!

Let us know how it turns out.
Title: Re: Making a one dimensional roguelike interesting.
Post by: Trystan on July 03, 2013, 05:40:12 AM
Neat idea! And in Haskell too.

I've been focusing a lot on effects that change the terrain or status without doing direct harm. So maybe things that effect the terrain or positions.

Stuff like:
 Spike spells can turn the floor into spikes that damage anyone who's on them.
 Spike Armor users ignores spikes.
 Water tiles reduce attack, defense, and speed.
 Mermaids and Fish Scale Armor users get bonuses when in water.
 Fire that spreads to adjacent creatures and flammable terrain.
 Trapped tiles randomly swap the positions of everyone within a few tiles.
 Weapons or skills that let you swap positions with an adjacent group.
 Weapons or skills that knock enemies back.

It will be interesting to see if you can still give the players enough options - or at least the feeling of enough options - with only one dimension.
Title: Re: Making a one dimensional roguelike interesting.
Post by: malignatius on July 03, 2013, 07:52:17 AM
I would consider having the option to move up and down, for climbing up or down a level (ladders/elevators) Just like a platform game. But still keep it to one screen. That way the player could for avoid enemies from time to time by choosing a different route.

... and yeah, consider doing something other than generic fantasy setting. :-)
Title: Re: Making a one dimensional roguelike interesting.
Post by: Destroid on July 03, 2013, 08:57:30 AM
I made a higher dimensional prototype that uses a series of 1D representations to communicate the environment to the player.

https://dl.dropboxusercontent.com/s/cjkx4w3gwl07zk8/ndrl.swf
Title: Re: Making a one dimensional roguelike interesting.
Post by: Paul Jeffries on July 03, 2013, 10:49:51 PM
The other dimension that you can make use of is time, so I would make that a key ingredient of gameplay and combat - have a lot of delayed-time actions and attacks that require charging up before use, combo attacks and so on.

You could do something really interesting with magic by having different spells effect different patterns of spaces over time.  In fact what might be cool (and help to keep these patterns understandable for the player) is if you say that magic in this setting is actually 2-dimensional shapes passing through your 1-dimensional world, so that all you see of them is a 1D 'slice' (yes, I'm stealing this from Flatland (http://en.wikipedia.org/wiki/Flatland)).

For example, suppose you had an 'X' spell that in 2D looked like this:

#    #
 # #
  #
 # #
#   #

So if you cast the spell a few tiles ahead of you, on the first turn it would look like this:
_@__#___#_
Then on turn 2:
_@___#_#__
Turn 3:
_@____#____
Turn 4:
_@___#_#__
Turn 5:
_@__#___#_

(Affecting the tiles marked by #s, obviously.)

You would then have to plan your spellcasting and movement carefully so that you hit monsters vulnerable to that magic type while avoiding hurting yourself or hitting monsters that could absorb that magic-type.
Title: Re: Making a one dimensional roguelike interesting.
Post by: Darren Grey on July 04, 2013, 01:47:24 AM
I came along to post about using time and Paul beat me to it :)  Check out Kerkerkruip for some ideas on how to use timed charging attacks.

Paul, your intersecting 2d shape thing makes me think of making a FlatlandRL! Summon spheres to intersect the plane next to the enemy, etc...
Title: Re: Making a one dimensional roguelike interesting.
Post by: ekolis on July 04, 2013, 04:05:33 PM
Wasn't someone one #rgrd working on a 1D roguelike where the @ was controlled by an AI and players could view the map via IRC? Was that one of you guys?
Title: Re: Making a one dimensional roguelike interesting.
Post by: halvorg on July 04, 2013, 04:31:46 PM
Thanks for the feedback, I like using time as a second dimension and as a constraint.

I've been thinking of a concept/setting where the protagonist must outrun the "last" boss until he reaches the end - and only then slaying it. I'm not sure why he'd do that as of yet, maybe the glorious king has promised a reward for whoever kills the Great Beast(tm) infront of his court? The reasoning is not important

Some core gameplay mechanics thoughts:
Resources: Energy and Health
Health is regained by picking up health globes like those from diablo 3.

Every action the player takes depletes energy, the player may do up to n actions per turn, but every additional action comes with an increased energy penalty.
Energy is only regained through resting.
 -- Resting takes a long time, the boss will gain ground while the player rests.

The chase:
If the player is too conservative on his energy consumption for each tile moved forward the boss will catch up to him.
If the player is too reckless with his energy consumption for each he will need to rest more often - the boss will catch up to him.

Almost any enemy can be skipped, but the boss will devour every skipped enemy. Gaining ground and/or strength.
If the boss catches up to you too early, you can still kill it(unlikely), but you won't get the bonus score you'd get if you had lasted all the way to the end.
--

As for combat, classes, skills, levels and such I have to think more on it, multiple actions per turn (at a penalty) sounds cool and all, but it has to be done in a way that ideally doesn't force you to navigate through different menus (something I'm not really a fan of). How characters progress etc. is almost arbitrary to me, provided the implementation is good.

Another cool thing would be (rare) random encounters like in FTL. (ex. if you do not help peasants on your way to the Great King(!) militias may show up later in the game to impede your progress [as the last boss wrecked havoc in your footsteps]). This is way into the future though and too much to start working on right now.

Barring major negative response I think I'll work on implementing the chase and a simple combat system for a first prototype.
Title: Re: Making a one dimensional roguelike interesting.
Post by: guest509 on July 05, 2013, 07:37:32 AM
My only advice, as always, is to stick with your 'gimmick' and milk it to the max.

1D roguelike? Back and forth? Man there are TONS of games that do that very think and are pretty fun.

Check out Urban Champ on the NES. The command were: Move forward. Move back. Jab. Haymaker. And you could have your defense high or low. It's the best 2D fight game I can think of. But there are others...

Street Fighter (SNES and Arcade), it has jumping but try a few games without jumping. In high school I used to play without jumping. Win without jumping and I give you a quarter, otherwise bring it!

Ring King (Arcade and NES, Arcade preferred) was basically 2D but with the occasional break where you circled.

Mike Tyson's Punch Out and Punch Out for the SNES and Arcade are 2D games essentially.

Finally I can think of the game Trojan (NES and Arcade), you can jump but it was not a jumping game, if memory serves jumping was more of a combat move than it was used to traverse the level.

In closing there a bunch of shitty boxing games for the NES, SNES and SEGA that were back and forth and in and out affairs. They sucked. I'm thinking of George Foreman Boxing here.

Also the platform stages of Double Dragon.

Hope that helps man.
Title: Re: Making a one dimensional roguelike interesting.
Post by: guest509 on July 08, 2013, 08:26:43 PM
  I seem to remember multiple fencing games that are linear. Pretty neat. Block high, mid or low, advance, retreat, thrust.

Title: Re: Making a one dimensional roguelike interesting.
Post by: halvorg on July 15, 2013, 12:53:38 AM
I've experimented with lots of different methods of rendering the game, I've landed on SDL for now.

Simple combat is well on its way, but I am a bit stumped on how to show multiple enemies in one tile (currently 16x16) given that there will be more than a couple different kinds of enemy. (having n "subtiles" in a tile breaks if  there are n+1 enemy types)

An examine button would of course work, but that is not something that the player should be forced to do every other turn.

This is a snapshot of how it looks right now [http://i.imgur.com/VkHwvIm.png (http://i.imgur.com/VkHwvIm.png)], please ignore the unaligned/overflowing text and rough boxes, everything is very temporary. I like the simple representation of the game world up top, but it isn't powerful enough to adequately show multiple enemies on the same tile.

If I limit the view distance a lot I could have a textual description of every enemy in sight available somewhere, I think that is the better solution right now. -- But I still want the player to have movement skills such as jump or charge available, which requires a minimum of view distance for it to make sense.
Title: Re: Making a one dimensional roguelike interesting.
Post by: Vanguard on July 15, 2013, 05:52:55 AM
You could do something like this (http://i.imgur.com/FIGHS7z.png) with miniaturized versions of enemy sprites.

Or maybe it'd be better to enforce a one enemy per tile rule?
Title: Re: Making a one dimensional roguelike interesting.
Post by: requerent on July 15, 2013, 07:02:27 AM
You could do something like this (http://i.imgur.com/FIGHS7z.png) with miniaturized versions of enemy sprites.

Or maybe it'd be better to enforce a one enemy per tile rule?

Or make it so that each terrain type can only hold so many enemies.

But- imo, at that point things are becoming uninteresting in the 1D sense, as you're just emulating 2D in 1D.
Title: Re: Making a one dimensional roguelike interesting.
Post by: JohnK on July 15, 2013, 09:05:53 AM
Simple combat is well on its way, but I am a bit stumped on how to show multiple enemies in one tile (currently 16x16) given that there will be more than a couple different kinds of enemy. (having n "subtiles" in a tile breaks if  there are n+1 enemy types)

You should have loads of screen space when working in 1D, so could they not just stack up the screen like this...

Code: [Select]
      h
   g  h
@  Gggh
======================
Maybe the ordering of the stack could be important too, so you can only attack the top/bottom monster in a stack (and special attacks/spells could alter this), or similar.
Title: Re: Making a one dimensional roguelike interesting.
Post by: halvorg on July 15, 2013, 02:03:56 PM

But- imo, at that point things are becoming uninteresting in the 1D sense, as you're just emulating 2D in 1D.

Good point.
Title: Re: Making a one dimensional roguelike interesting.
Post by: joeclark77 on July 23, 2013, 07:55:55 PM
You could also do a little bit of a ballistics type game like Bowmaster where you are setting the angle and power of the spells you cast or arrows you fire, trying to take out enemies while they approach.