Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Pickledtezcat

Pages: 1 2 [3] 4 5
7DRLs / Re: 7DRL 2014 Hype it UP!
« on: February 27, 2014, 02:54:55 AM »
I like the idea of star trek roguelike. If you had kirk, spock and redshirt, redshirt could die and it's no big deal, just beam down another one, but if spock or kirk die it's game over.

Anyway, where can I find the rules? Is there a requirement to make the game playable on any computer? Does it matter if you need to install a different program to get it to work on your system?

I would use Blender Game engine which can run from a stand alone .exe on windows or be run using blender if you don't have windows, or it can run in a web player but you have to install a plug-in.

In my case it would probably be like a 2 day roguelike as I doubt I could spare a whole 7 days of free time as I'm a dad to a two year old boy, however I've got lots of code laying around already that I can port, and some old static or two frame animation graphics I can use.

I think it would be possible to finish the game by the deadline (or at least get it playable).

I'm going to have a team of robots trying to escape from a secret underground governement research facility. You'll start at the bottom of the dungeon and work your way up. Enemies will get progressivly easier but your team will get more and more damaged and lose functionality as you progress. I hope that hasn't been done to death already.

I had a look at java...

If you do go with Java, my library SquidLib may be very useful for you. It doesn't have a display interface for mobiles (I recommend libgdx maybe), but it does have quite a bit of utility classes for roguelikes that you'd be able to use.

thanks, I'll certainly give it a look if I go with Java.

I had a look at java when I was thinking about using unity. It doesn't seem that bad, though I didnt like unity.

Programming / Re: Generating well-connected maps
« on: February 22, 2014, 09:19:35 AM »
Have you considered using multiple levels or scales of generation?

In my system I use [levels[room_arrays[rooms[walkable_tiles]]]]

I use a room system that handles room sized blocks of the map (10x10) and also larger "room arrays" such as a 4x4 spiral or a 2x3 "L" shaped room. I'm working with a 3d program but I'm sure it could be converted easily to work with a 2d game engine. A room array looks like this:

Code: [Select]

The border walls are implicit in the generator and don't have to be defined in the array. The 1's =Ordinary rooms and the 7= Exit, a special square which is used as the linking point with other room arrays. A room array may have one or several exit squares, but most contain at least one otherwise the room won't be connected (a function could be added to automatically add an exit square if one is not present).

The result looks like this:

The crosses are just simple visual representations of a single tile for quick testing for the main algorithm, the final result uses a NorthEastSouthWest tile picker to ensure rooms and corridors have the right shape:

For example if the northern neighboring tile is an ordinary room and the current tile is an ordinary room it uses a ordinary room transition tile for the northern quadrant. If the eastern neighboring tile is a corridor and the curent square is an exit square it will use a doorway complete with pre-placed door or the Easternmost quadrant of that room. If the current tile was not an exit it would use a wall quadrant instead, blocking access to the corridor from that tile.

My rooms are 3d objects with a walk mesh, but it would be easy to specify rooms as arrays, and even to randomly generate room types or room quadrants (with alcoves, doors, pillars etc...) to form a dictionary which could then be sampled to provide rooms for the level builder. Because the generator works with 10x10 chunks instead of individual tiles it's quite fast, for example you can work with a 200x200 graph as easily as with a 20x20 graph.

I use A* to generate corridors and a couple of simple functions to randomly rotate and mirror the room arrays so they don't get too repetitive. when running the A* pathfinder I can give existing corridors a lower movement cost to encourage the path finder to use existing corridors whenever possible (increasing connectedness). I can also use some additional rules when calculating the paths:

(room_list is a list of all rooms tagged as exits from the list of room_arrays when generating the map)

1: forwards single connectedness (all rooms are connected to the start room, no extra incentive for A*to use existing corridors) start tile for A* is room_list[0], end tile is room_list[room_index] (sounds like the algorithm the OP was complaining about, not really a bad algorithm, unless it's the ONLY algorithm).
2: backwards single connectedness (all rooms are connected to the end room, no extra incentive for A*to use existing corridors) start tile for A* is room_list[-1], end tile is room_list[room_index]
3: Multiple cyclic connectedness (all rooms connected in sequence) start tile for a* is room_list[room_index-1] end tile is room_list[room_index]
4: Random multiple connectedness (as above but randomly select the room index from a temporary list and .pop() each index as you go through the list.

You could also run multiple corridor generation functions with different rules to be sure of multiple connectedness.

Some things to consider:
  • The script could be much faster, I learned a lot about A* during development of my game and I'm sure I could cut the generation time to just milliseconds just by implementing a few improvements, something I plan to do later when I've got time to spend on optimizing features that work already (such as using python's heapq in the A* algorithm or using smaller graph sections i.e. limiting the search area, or just by using a more efficient graph style, as I currently use an array of lists). Anyway, the slowest one you can see there is a 60x60 grid which would be a 600x600 tile dungeon, covering an area of 360,000 tiles and generated in just 6 seconds.
  • The corridors are a little boring, if you check out the video above you'll see I also experimented with adding granularity to the map on order to make corridors snake and turn a little more to avoid areas of hard rock.
  • Having more rooms and less corridors may be preferable, if so just raise the target number of rooms or reduce the graph size.
  • I used 10x10 chunks with double square doors and corridors in this particular generator as that's what the tile set is designed for, but you could use 5x5 chunks and single square doors and corridors quite easily (something else I plan on implementing in the future when making a different tile set).
  • This is still in testing, so I have quite a limited variety of room arrays, so you can see lots of repetition (only 58 unique room arrays, max size 4x4). In the final game there will be lots and lots of potential room arrays, I may even write script to automate generation of new arrays.
  • If you're going to be working with big levels like this you'll need to speed up how your game handles such things as path finding, LOS or rendering of the dungeon. The program I use, Blender game engine does this by only rendering tiles in the camera view fulstrum, and I help it along by disabling animations and logic for objects outside that area. I also use dictionaries to store my level and skip any tile which is not a room or corridor tile when building the dictionary. When building a graph for LOS or pathfinding I first check a tile to see if it is in the dictionary and if not I can ignore it or have it return False to any boolean check. In that case the room at the beginning of my post would be a dictionary of 4 entries instead of a 4x5 array of 20 tiles, as only those 4 tiles are important. You can do other things such as using Bresenham lines to pre-explore a route to a target tile before kicking in the A* pathfinder, if the route is clear you don't need to use the more time consuming algorithm.

I'm sure you guys know all this stuff already, but I wanted to be thorough in my explanation as I'm rather new to coding and don't know all the terminology, and I don't know what is commonly done in roguelikes to speed up performance. You probably do all the things I suggested already, or can tell me why they are a bad idea and you don't use them. :)

Is there a way of making games for mobiles (android) with python? (for free, I don't want to pay out for any licenses, it's just my hobby, not a job).
I hear about Python + Libtcod and other things, but I'm already using a nice 3d game engine that gives pleasing results. The only thing Blender Game engine can't do is make games playable on mobile devices (there has been some work towards that, but not much progress after 2-4 years and the blender developers are talking about killing off the game engine altogether in the future).

I've had plenty of experience of making and using sprites and 2d tilesets, I first started making game content as a modder for civilization 3, and recently I made some demos to revisit the process, so it really wouldn't be a problem going to a 2d game engine.

However, I'm comfortable with the python scripting language, as it's easy to use and fast to write, so I don't want to start messing around with C++ or anything like that.

Anyone got any advice?

Design / Re: Brainstorming: Item lists.
« on: February 21, 2014, 02:02:44 PM »
My VoI has carpets. They can be put on floors to hide traps (which are visible otherwise). Also some carpets are magical (flying, affect beings standing on them in some way, trapped, teleport, etc.)

oh, hiding traps would be a good use for carpets.

I hear a lot of alternative uses for items, it must be difficult for the game designer to think of them all.
The first time I played D&D we went to the local store in the village to buy some gear, everyone else was looking at the weapons list, but I asked the DM what hammer, iron spikes and wedges were for, and being only 12 years old (we both were) he let the cat out of the bag by explaining that the wedges could be hammered into door frames in a dungeon to make the area secure for sleeping, though you'd need a crowbar to make sure you didn't accidentally nail yourself inside a room with no way of getting out.

I love all that classic roleplaying game stuff, like a 10 foot wooden pole (for warding off rust monsters), 60 foot of rope (for roping the party together so you don't die by falling down a pit trap) or silver daggers (for lycanthropes and vampires). It's the kind of thing you just wish you'd brought along when you find that you need it.

Design / Re: Brainstorming: Item lists.
« on: February 20, 2014, 04:31:16 PM »
Body parts perhaps?
Your categorisation looks a bit weird. E.g. you have 'treasure', which can mean pretty much *anything*. And then you have glasses (?) which is kinda very specific and not very common I guess. You have crafting ingredients, and then you have potion ingredients (brewing ingredients?). Are the latter actually different? Etc etc

I think you'll have an easier time brainstorming for the specifics if you nail down your categorisation a bit better.

Thanks, sorry they are categorized by effect, so treasure is a useless heavy item which is very expensive and can be sold for a lot of gold, ditto gems but they are not heavy. Glasses will help spell caster to read ancient manuscripts, (it's early renaissance technology, but some RPGs allow firearms so what the heck). Crafting ingredients will be used for repairing weapons and armor or making new, non-magical ones. Potion ingredients may be eaten as food (with some possible bad effects), but crafting ingredients can't. Tools have a small set of types (such as medical kit, lockpicks, repair tools, mapmaking kit, potion brewing equipment) which allow access to a new ability (if you don't already have the skill). Musical instruments will have an effect later but for now they are light weight treasures, being fairly valuable but not very heavy compared to a huge bejeweled Ankh.

I guess for general roguelikes you could break the lists down in to further categories, or include some things all in the same list.

For my items there is going to be just one class of item (the item class) which has all the possible attributes or flags (such as damage and AC or gold piece cost or casting requirements) but won't display them if they are not compatible with its type. That way I can use one single static data dictionary to produce the items for the dungeon and they will then be stored as unique keyed objects in a saved dictionary. The roguelike Cogmind is doing a similar thing. One benefit is that it makes it easier for me to program the inventory or player equipment slots system. I don't have to write one system for putting on armor and another for picking up a sword.

It's a system I've used before, but not on this scale so we'll have to wait and see if it all goes wrong. :)

Quote from: AgingMinotaur
Books, hammers and nails, trapped chests, puzzles, musical boxes, magical bottles, shrunken heads, carpets, ponchos, pies, pills, instruments, thimbles, stilts, philosophers' stones, tobacco, tea, chains, ropes, crampons and snow shoes, grappling hooks, ladders, keys and padlocks, lockpicks, masks, dowsing rods, disguise kits, hourglasses, juggling balls, anvils, crowbars, nets, fishing rods, saws, quills and inks, pendulums and divining equipment, tents, umbrellas, brooms, mirrors, perfumes and soaps, glue, magnifying glasses, spyglasses, brooms, shovels and pickaxes, bird cages, folding chairs …

As always,

There's a lot of interesting, but perhaps function less items there. I have been considering having a bunch of useless items in the game just because you don't always find useful stuff in a crate in a forgotten dungeon. For example carpets and brooms. I played a neverwinter nights mod years ago which had such items in it and it was quite interesting as you weren't immediately sure if the set of ornamental plates you found was a plot item or just junk. In other games if you find a child's doll or a certificate of ship worthiness you can be sure someone back in the village wants it so you might as well bring it along even though you haven't been given the quest yet.

Other stuff does sound interesting such as ropes and hooks or crowbars, shovels (double or otherwise), fishing poles and nets, which would require some coding to make them usable.

Of course traps...

Thanks to everyone else for the suggestions. It's filled my brain with ideas.

Design / Brainstorming: Item lists.
« on: February 20, 2014, 03:21:01 AM »
I'm hoping you can help me with generating a list of potential in game items.
I just looked through the Dawn like tileset and there's a good selection in there, a lot of which I already have, but maybe I'm missing somethings.

Anyway, for me, and for other people gearing up to make a roguelike (fantasy genre) what kinds of items need to be prepared? This doesn't include furniture and man sized items such as fixed lanterns or chests.

So far I have:
  • armour- many different types and variants
  • clothes- different variants
  • capes/cloaks -different variants
  • robes- different variants
  • hand to hand weapons- different types and variants
  • ranged weapons- different types and variants
  • helmets, hats and hoods- different types and variants
  • shields - different types and variants
  • lanterns and torches- different types and variants
  • rocks- different types and variants
  • ranged weapons ammo- different types and variants
  • books and scrolls- different types and variants

I think I need:
  • food - different types and variants
  • medicine- different types and variants
  • potions- different types and variants
  • potion ingredients- different types and variants
  • crafting ingredients- different types and variants
  • tools- different types and variants
  • rings- different variants
  • amulets, necklaces and bracelets- different types and variants
  • boots -different variants
  • gloves- different variants
  • musical instruments- different types and variants
  • small containers- different types and variants
  • wands- different variants
  • glasses- different variants
  • money- different amounts
  • gems - different types and variants
  • treasure- different types and variants

What am I missing? Can you think of other things to add to the list? Generic fantasy RPG gear, or specific items that would be cool.

Programming / Re: Dev blog for my my little roguelike
« on: February 19, 2014, 06:49:29 AM »
If you want to avoid farming you could give points for tiles uncovered

imo this is almost as bad as farming for items.  It rewards slowly exploring every tile on every floor even when there's no danger or any practical reason to be so thorough.

A good scoring system should be about displaying skill in excess of what survival play demands.  Good ways to do this are risk/reward systems like Brogue's lumenstones.  Let the player opt in to something dangerous and reward them with a nice score if they pull it off.  Optional dungeon levels, Nethack-style conducts, actions that deliberately weaken the player or strengthen their enemies.  Those kinds of things make good scoring systems.  Shmups are the genre with the most diverse and best-developed scoring systems, so they're a great place to look for inspiration.

You could also just base score on how quickly people complete the game or how far they got if they died.  That always works.

Watching the video it looks like the levels are pretty packed with lots of areas to explore, some of which would be hard to spot because of the way the rooms are constructed. If you've also got secret doors, tiles uncovered would seem like a good indication of how well you explored the game. You could give points for each tile depending on depth, such as one point per tile on level 1 and 1.5 points for level 2, 2 points for level 3 etc... If you didn't complete the game that would give you a pretty good indication of how well you've done. You could also give points for monster kills or item pickups, but less than tiles explored, such as 0.1 point per XP cost of monster or 0.1 per GP cost of item.

It's up to you what kind of behavior you want to reward, exploration, looting, combat? Tactics? You could multiply points gained by the difference between player XP and monster XP.
Just ideas.

Forgot to say how great the game looks already :) I watched the video and had a look through the blog and I'll be watching eagerly as it develops.

Programming / Re: Dev blog for my my little roguelike
« on: February 19, 2014, 01:34:59 AM »
If you want to avoid farming you could give points for tiles uncovered (add a point via the los manager every time a tile that hasn't been viewed before is visible) or for the number of unique treasure items you manage to find and bring out of the dungeon. The treasure items wouldn't have any usage but would take up weight or space in the inventory making it difficult to carry a lot of them out.. the player could put them in a chest I guess and come back for them latter, but maybe they would get stolen by wandering monsters.

Programming / Re: jumping, crawling and swimming.
« on: February 16, 2014, 03:01:17 PM »
Well, anyway, I've gone ahead and sketched out the code for jumping, It'll add squares recursively in the direction of the mouse pointer, if the jump is in one of the cardinal directions.
It'll add the squares out to the position of the mouse pointer, and check as it does so if they are in the dictionary of movable squares (including flyable or swim-able squares). If the last square is a land square and the other squares were viable, it will return a visual path and the player can confirm it. Otherwise no path is returned and the jump is impossible.

For swimming I'm going to have to add a "is_swimming" property to the character (monster or player) and allow them to move normally through the water at walk speed. They will have to spend a turn to enter the water and to get out. They won't be able to attack or use items when swimming (unless they are an aquatic creature) and there will be some chance of items becoming damaged. It makes me think it would be a good idea to have a pack item which can store some inventory, which can be thrown like a thrown attack. It would be possible to throw it much further than you could jump, so it might be good to throw a pack of scrolls or whatever across the water first before swimming.

I'll have to be careful with how the code handles both situations, as I don't want the player to count as swimming when they jumped over a small area of water. I think having jumps occur only within one movement phase, while swims require at least three will stop any crossover. The "is_swimming" property will be added when the player goes in to the water and be removed on the turn they come out. It'll help to handle the animations for the 3d models too. If the character is swimming they can't jump, and can't move on to any non water square without doing a leave water action, which they can do if adjacent to a land tile. It may still be possible to loot corpses found in the water, or search adjacent squares for loose items.

I'm really looking forward to a player swimming down a long flooded corridor and rounding a corner to see a giant pike fish, or whatever swimming towards them. Maybe they can find a nearby ledge to get out of the water, or maybe they can swim back around the corner to where hopefully their companions are waiting with ranged weapons ready to shoot the big fish. Maybe they could get some lovely fresh fish out of the encounter.

I had thought of adding crawling, for moving through areas blocked with spiderwebs, etc... but I think I'll just follow the usual trope of having to destroy them using fire or weapon attacks.

Programming / Re: jumping, crawling and swimming.
« on: February 15, 2014, 07:21:21 AM »
Jumping in to someone and knocking them down would be a very interesting addition to the usual repertoire of attacks.
It reminds me of the Death From Above attack in battletech. What happens if you miss? Random Scatter? Could enemies be displaced by such an attack, or would the player stop short of the target square?

How are pit traps handled in general? Do they always lead down to the next level? In a case where you have multiple movement points per turn would it be a good idea to trigger the pit part way through someone's movement, or only trigger it if they actually land on the pit square at the end of their movement? Can pits be spotted? Do they look different from other tiles?

I'm using a 3d engine so I'll actually have to make pits take physical form (I've seen 3d RPGs in the past that just used a textured black plane to represent a pit, maybe that would work).

Do you think I should include a routine to make sure that if you fall to the level below there's no pit in that square? I guess unless pits are really common it would be unlikely.

Programming / Re: jumping, crawling and swimming.
« on: February 14, 2014, 01:13:19 PM »

Programming / Re: jumping, crawling and swimming.
« on: February 14, 2014, 07:12:50 AM »
Real time pathfinding visualization to the moused over square and when you find a route you like left click to confirm to initiate movement. If the path is invalid no path is shown and nothing happens when you left click.

edit: by failed jumps I mean having a chance to fall if the distance is too far.
I'm thinking of having a jumping skill, or basing jump distance on an attribute or having a chance to clear a jump based on an attribute.

Programming / Re: jumping, crawling and swimming.
« on: February 14, 2014, 05:46:29 AM »
One good way to do that is to break the jump action into multiple turns.  Have the game remember the direction the actor chose to jump in, and every time their turn comes up, automatically move them in that direction until the jump ends or they collide with an obstacle.

You could also make the whole action that take place in a single turn.  Check every space between the actor and their destination, if it's all clear, move them to the target space.

That would be a good way of handling jumping with single movement.
At the moment I use bresenhams line for navigation and if the line is interupted by impassable tiles, then do an a star search. I'm thinking of using the line for jumping too, so I can check if the jump is straight and then just skip the a star check and return no path if the jump is invalid.

I'm wondering how to deal with failed jumps. Would it even be a good idea?

Pages: 1 2 [3] 4 5