Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411426 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 10:35:57 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsLike
Pages: [1]
Print
Author Topic: Like  (Read 1945 times)
DeadPixel
Level 2
**



View Profile WWW
« on: May 06, 2013, 01:46:33 PM »

Just something I'm working on.  The name is kinda placeholder, but the game is a Gauntlet-like, roguelike-like, Robotron-like thing.  So that's where that comes from.  The aim is to have a 4 player local co-op arcade-y fast paced dungeon romp.

Aiming for PC and maybe Ouya?  I don't have one of those, though.  Mobiles are unlikely.

Using Oryx's lo-fi tiles for prototyping art placeholders so that is pretty irrelevant atm.  Will try to track down an artist when I get further along in development.

Lots of good backend work is done already, though.  Here's one of them devlog GIFs people love showing collision groups, entity separation, shooting, and other stuff working.



Will post more!
Logged

JLJac
Level 10
*****



View Profile
« Reply #1 on: May 07, 2013, 06:33:45 AM »

Cool! From the gif, your engine looks nice an solid. I notice that the barrels are allowed to move around freely, rather than being stuck to the grid. If you want to push a barrel into a one-tile corridor, are you sure it's not going to be annoying to try to make it align? Or maybe you have some clever system set up for that?

The size and look of your level makes me think of stuff like bomberman rather than a rouge-like, but I guess the playstyles could go together nicely.

Graphics look cool as well, IMO. Just one thing (and be happy that I got here first and not someone even more zealous about this) pixel size integrity. If you do pixel graphics that are deliberately low-res, you'll wanna make sure that all sprites have the same resolution, and that pixels always line up, so that there's only one pixel size throughout. Or people will be very very upset with you Wink

Another question, you say you want 4-player local? How's that going to work if you use the mouse for aiming? I think a local multiplayer game should be able to support at least two players without any game pads hooked up.
Logged
DeadPixel
Level 2
**



View Profile WWW
« Reply #2 on: May 07, 2013, 02:14:10 PM »

The game isn't really tiled based, just the map.  So all the entities are able to freely move around and collide with the terrain fine.  Pushing a barrel into corner is pretty easy. Tongue

The size of the room here isn't indicative of the size of the levels.  It's just a test area.  Randomized dungeon layouts will be a focus soon.  Just laying the groundwork first.

And, ya, the graphics are hodgepodge re-sized messes just so I can have something on the screen.  Worrying about pixel sizes and aesthetic isn't really on the table yet. Smiley

Any number of players greater than one will have to require a dual axis controller.  I want 360 degree shooting and don't want to settle for 8-axis or 4-axis or auto aim or anything.  So gamepads it is.  The game will be single player as well.
Logged

JLJac
Level 10
*****



View Profile
« Reply #3 on: May 08, 2013, 12:03:34 AM »

Hm, I understand that it's easy to push a barrel into a corner, but what if you want to push it into an opening? For example the little niche thing you have in the lower left corner? Maybe this is not at all very relevant, if your gameplay won't have any pushing around in it...

So, if you're going with big levels, how are you planning to solve the scrolling/multiple players-problem?

I see your point about 360 aiming... One thing you could consider is that for two players on the same keyboard there could be some kind of simplyfied support character, tails-style. A dog, or something.

Oh, and those place holder graphics, are they yours? I really like them! Looking forward to all the scary/cute demons and monsters.
Logged
DeadPixel
Level 2
**



View Profile WWW
« Reply #4 on: May 12, 2013, 02:45:20 AM »

Been hard at work putting more systems into place.  Nothing that I can really show in lovely GIF form yet, but I am quite happy with the entity/component system I have going. 

It's basically just the Artemis Entity Framework with some tweaks. First, I've made entities and components pool properly so there's no needless garbage creation.  Second, and more important, I've implemented an entity template system.  What that means is that I can define, in external JSON files, what kind of entities I want in my game and what their respective components (and parameters thereof) should be.  On top of that multiple templates can be applied to a single entity which gives me a basic sort of inheritance system to work with. 

For example my current 'entities.json' looks like this:

Code:
{
    "player" : {
        components: {
            player: null,
            transform: null,
            movement: null,
            size: { w: 1, h: 1 },
            group: { group: "PLAYERS" },
            stats: null,
            ranged: null,
            collision: {
                group: PLAYER,
                collision: [ ENEMY, HAZARD, PICKUP ],
                separation: [ PLAYER, DESTRUCTIBLE ],
                boundingBoxes: {
                    "world" : { w: 1, h: 1 },
                },
            }
        },
    },
    "player-wizard" : {
        inherits: [ "player" ],
        components: {
            movement: { maxSpeed: 3 },
            health: { "numHitDice" : 2, "hitDiceValue" : 4 },
            stats: { atk: 3, spd: 5, def: 3, mdef: 6 },           
            ranged: { ammoType: "fireball", interval: 0.33 },
            animated: {
                pack: "player-wizard",
                animations: {
                    "idle-north" : { fps: 0.1, playMode: "loop-pingpong" },
                    "idle-east" : { fps: 0.1, playMode: "loop-pingpong" },
                    "idle-south" : { fps: 0.1, playMode: "loop-pingpong" },
                    "idle-west" : { fps: 0.1, playMode: "loop-pingpong" },
                    "walk-north" : { fps: 0.1, playMode: "loop" },
                    "walk-east" : { fps: 0.1, playMode: "loop" },
                    "walk-south" : { fps: 0.1, playMode: "loop" },
                    "walk-west" : { fps: 0.1, playMode: "loop" },
                    "die" : { fps: 0.1, playMode: "normal" },
                },
            },
        },
    },
    "ammo" : {
        components: {
            transform: null,
            movement: null,
            size: { w: 0.5, h: 0.5 },
            collision: {
                group: BULLET,
                collision: [ ENEMY, DESTRUCTIBLE ],
                boundingBoxes: {
                    "world" : { w: 0.5, h: 0.5 },
                },
            },
            damage: null,
        },
    },
    "fireball" : {
        inherits: [ "ammo" ],
        components: {
            movement: { maxSpeed: 6 },
            damage: { min: 2, max: 4 },
            animated: {
                pack: "ammo",
                animations: {
                    "fireball-firing" : { fps: 0.2, playMode: "loop-pingpong" },
                    "fireball-explode" : { fps: 0.2, playMode: "normal" },
                },
            },
        },
    },
}

This lets me quickly create different player entity types and ammo types without needlessly redefining the same thing over and over.   Wizard

But, more work to be done this weekend!  My goal is to have dungeon generation up and going by Monday evening (the last day of my weekend) at the latest.  So far I'm on track for that.
Logged

DeadPixel
Level 2
**



View Profile WWW
« Reply #5 on: May 12, 2013, 04:13:06 PM »

More progress today.  Lots more code refinement and improvements all around, but I also implemented 'scripting' (really just Java state machines) and events/listeners so interactive gameplay stuff can start happening as evidenced below.  Animations, and death, and spawning, oh my.

Logged

DeadPixel
Level 2
**



View Profile WWW
« Reply #6 on: May 13, 2013, 06:37:58 PM »

Spent most of the day implementing dungeon generation.  It's pretty simplistic in nature at the moment, but here's a breakdown of the process:

  • Create a randomized dungeon map layout using Diffusion-limited Aggregation
  • Create paths between the generated map layout using a DFS search.  This gives us a basic connected layout like so:
  • For each dungeon map cell generate the tile map using pre-made herringbone wang tiles which gives us something like

And that gives me a basic generated dungeon.  Steps from here are to flesh out the herringbone tiles themselves to place dungeon features (aesthetic and functional), and to setup doors to travel from map to map.
Logged

DeadPixel
Level 2
**



View Profile WWW
« Reply #7 on: May 28, 2013, 04:56:06 AM »

I've found someone interested in arting this game up for me!  That's great news, and I'll post more about that in the next couple of weeks once I get some things to add to the game.

I've completed the steering behaviour implementations I needed.  Entities can now seek, flee, arrive, separate and avoid walls properly while chasing the player around.  Feels and looks good to have a swarm of dudes after you while you shoot like mad.

I was unhappy with the dungeon generation above.  The maps wind up too contiguous while being too chaotic.  I feel like for this type of game, where you need to be able to aim your shots while moving, that having a bunch of terrain in the way all the time isn't great.  So, I went looking for a way to make interesting maps that predominantly feature rooms and corridors.

What I found was a nice process shown off by the TinyKeep guy over at http://tinykeep.com/dungen/.  The steps as are:
  • Generate randomly sized cells within a starting boundary area.  They will be overlapping.
  • Separate the cells until there are no more overlaps.  The separation steering behaviour is useful  here.
  • Get the map bounding box by examining the cells' corners.
  • Fill the map's remaining empty space with 1x1 cells.
  • Examine each cell and pick out those who have both sides >= a certain threshold.  Mark them as rooms.
  • Create a connectivity graph of all marked rooms using Delaunay triangulation.
  • Find the MST of the above graph.  Those edges are your core path through the map.
  • Add a certain percentage of the rest of the edges to the MST to create some loops and variety.
  • Created corridors between rooms linked by an edge.  Any of the cells that weren't marked as rooms get added to the map as corridors if they are intersected during this phase.

Results are something like this: 



Much happier with this for a 'standard' dungeon feel.

Other generators will be added later (cave-likes using some sort of CA) for what I want to do next.

Dungeon names and titles as a generation grammar.

The basic idea is as follows:

  • Each time the player wants to explore a new dungeon they are asked to name it.
  • From the given name generated a hash code for the name, ie, 'Yserbius'.  That's our dungeon seed.  Now the player can share the dungeon by name, and go back to explore the same dungeon whenever.  I think Minecraft did this.
  • Now the player is given the option to add a title to the dungeon using a preset list of nouns and adjectives in a certain order, ie 'The <map descriptor> of <modifier-descriptor0 ... n>', ie 'The Yawning Maw of Decaying Doom'.
  • Use the title to define what the generated map actually is.  The map descriptor will define the overall structure of the map, ie dungeon-like (as described above), cave-like, ruins, forested, etc.  It sets the basic theme of the map.
  • The modifier descriptors will be used to modify what's in the map rather than what it is.  'Decaying' could mean that the majority of the monsters are undead, and that there are putrid pools of water that are best to avoid.  'Doom' could simply mean that the difficulty is increased overall.  Monsters have more health, hit harder, and are more numerous.

That's next on my plate.  Followed by actually placing monsters and loot on the map.  Followed by lots of content generation and endless iteration on evreything. Smiley

Once I get monsters/loot in I'll begin posting playable builds for feedback.
Logged

DeadPixel
Level 2
**



View Profile WWW
« Reply #8 on: June 05, 2013, 11:15:58 AM »

Been busy refining things.  

Lucky enough to have gdrush sign up to art things for me.  Got a bit of work-in-progress tiles in-game now.  Will slowly replace Oryx's stuff as time goes on. Smiley

Think I have a dungeon gen setup that I finally like.  It's more of a standard room and corridors setup, but I actually think that lends itself better to the gameplay I have in mind here.

Have room decorators working too, so I can have room features like pillars and inner rooms pretty easily.  Can even use the decorators to add small things to rooms like mazes or pre-set mini puzzles.

Will probably look into adding extra things like magma seams, etc using some CA overlay at a later date.  This is good enough for now, though.

Also playing with lighting and a darker atmosphere.  Not sure if I like it enough to keep it, but we'll see once I start lighting more real things like sconces, fireballs, certain monsters, etc.  Could add some nice atmosphere or could just be meh.

Next things to look at are monster AI and a loot placement/score system!  Then start fleshing out player characters and their abilities/themes.

Anyway, here's my update GIF!  Sorry about the banding on the lights.

Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic