Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411279 Posts in 69323 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 04:31:37 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsRogue Heroes - 4P Coop ARPG Roguelike [KS Live]
Pages: [1]
Print
Author Topic: Rogue Heroes - 4P Coop ARPG Roguelike [KS Live]  (Read 2847 times)
HeliocentricS
Level 0
**



View Profile WWW
« on: May 15, 2017, 06:36:03 AM »



Overview

Rogue Hero is an action RPG roguelike. Fight through enemies, traps, and puzzles in randomly generated dungeons. Earn enough Gems in each run to upgrade your equipment, your hero, your class abilities, even your house and village. Add more buildings, houses, stores and services and watch the village go from a dusty road to a thriving community. Explore an overworld full of secrets to help you on your runs. Conquer each dungeon in a variety of environments and earn the title of true Rogue Hero.


Kickstarter: Rogue Heroes Kickstarter

Announce Trailer:



Coop Trailer:



Twitter: https://twitter.com/HelioCStudios
Site: http://www.heliocentricstudios.com/

Features

  • Randomly generated multi floor dungeons full of traps, puzzles and enemies
  • Build your village and house up from a dusty country road to a thriving community
  • Large overworld full of secrets that grant you permanent upgrades
  • Multiple classes with very different playstyles and abilities
  • Puzzles like sliding block and magic mirror are completely random



First Post:

      Hey guys starting a DevLog for the game we've been working on for a bit. We're a 2 man team of an artist and programmer. We released two games on Steam before this one (Magnetta and Gran Vitreous) but we're taking a bit longer developing this one and wanted a place to talk about our progress, discuss how we did different things, and get any comments and feedback.

We started working on Rogue Hero in earnest around September of last year (2016). I'd made a prototype messing around in Dec. '14 that would generate a random dungeon and I kept thinking about a full game built around it ever since. I spent the next year and a half working on it during breaks and vacation in between working on other projects before we switched over to working on it full time.

Since then we've got the basic dungeon generation down which generates multiple connected floors that have keys and locked doors placed in randomly. We've also got a village in that you can already build up in a basic way. The dungeon entrances and the world all take place on an overworld map that we've started filling out.

Gameplay wise we started out developing more in a vertical slice style this time. We focused on some basic rooms, traps, puzzles and a pretty good set of enemies. We gave rooms multiple spawn sets to adjust enemy types and room puzzle solutions. Also some puzzles (like sliding blocks) are generated completely randomly. While getting that developed we polished up the combat, hit effects, and UI to a degree that the core gameplay felt a lot more final in the earlier stages than we would normally be at so far before release.

We released a trailer last week announcing the game and showing off what we've done so far, since we felt we had it polished to a degree and had enough to convey what the game is through visuals.

I'm going to post major feature overview sections every few weeks to show how certain parts of the game work and how we accomplished it from either a coder or artists perspective. The first best feature to cover is the oldest component of the game, the dungeon generation itself. I'll be posting that this Wed. May 17th.
« Last Edit: May 08, 2018, 05:47:52 AM by HeliocentricS » Logged
nickgravelyn
Guest
« Reply #1 on: May 15, 2017, 08:49:20 AM »

Looks like a cool design. I'm a sucker for 2D ARPGs (made one myself).

My only suggestion would be to (before you ship) find a different name. "Rogue Hero" is pretty generic sounding to me and might be pretty rough on being searchable. Something more distinct would probably help. Smiley
Logged
HeliocentricS
Level 0
**



View Profile WWW
« Reply #2 on: May 15, 2017, 09:07:16 AM »

Hey Nick, funny to see your name as the first response. The games being developed in Monogame and having used XNA for almost 10 years now I've read 100's of your posts over the years and gotten a ton of help from them, so nice to be able to say thanks!

The name was initially a working title but we liked the way it quickly conveyed what the game was without needing to see anything besides the name. I was worried about searchability but besides a relatively low popularity anime not a lot is competing with that search term.

We're considering a sub-title for it that might be the best middle ground between understanding the game from the title and having something less generic.
Logged
nickgravelyn
Guest
« Reply #3 on: May 15, 2017, 09:33:29 AM »

Long live XNA!  Cheesy

If the name works go for it. Just my 2ยข on it. You are right that, at least for people who are into roguelikes and ARPGs, the name does a quick and easy job of explaining what to expect.
Logged
MereMonkey
Level 2
**


Creator of Music


View Profile WWW
« Reply #4 on: May 16, 2017, 02:18:43 AM »

Oh wow, loved everything about that trailer!  Hand Money Left Addicted
Logged

My Site  -  My Twitter - *GASP* MY SPINACH PUFFS!
HeliocentricS
Level 0
**



View Profile WWW
« Reply #5 on: May 16, 2017, 08:52:00 AM »

Oh wow, loved everything about that trailer!  Hand Money Left Addicted

Thanks! That's awesome to hear  Grin
Logged
HeliocentricS
Level 0
**



View Profile WWW
« Reply #6 on: May 17, 2017, 07:53:33 AM »

Dungeon Generation:

When work on Rogue Hero first started the only real component to the game was the dungeon generator. At that point even the room shapes were randomly generated and although it produced some cool looking areas, ultimately the combination of random and hand placed worked better.

The dungeon generation can be broken down into a sequence for each floor then the floors are linked to get the final dungeon.

Floor Generation Sequence:

  • 1 ) Randomize layout of entire potential floor area filling it with 1x1,2x1,1x2, and 2x2 rooms randomly
  • 2 ) Give each room a random weight or cost to move through it
  • 3 ) Choose a random entrance and exit point for the floor
  • 4 ) Use A* pathfinding to create a route from entrance to exit moving through the randomly laid-in rooms and taking into account the weight/cost of each room
  • 5 ) Mark all rooms along that path as used
  • 6 ) Give each room a random template for its size that works with the layout of the area, whether its a main path or side room and the properties of the floor
  • 7 ) Link doorways through these rooms to create the primary path to the goal
  • 8 ) Randomly turn on rooms connected to rooms on the primary path to create side areas and make it non linear
  • 9 ) Give each room a random set of spawns, random lighting, randomize puzzles then spawn the necessary objects and enemies
  • 10 ) Set up room scripts to monitor actions in the room to trigger events



Once each floor is generated they're linked together and a boss is placed on the last floor.

The floors are chunked up into pieces depending on their size. A locked door is placed between the chunks and keys are placed throughout the dungeon so that its possible to traverse through all the chunks without getting stuck.



That's the jist of how it's working now, once we add more features to the dungeon I'm sure it'll get a bit more complicated but once that happens I'll write the followup post.
Logged
HeliocentricS
Level 0
**



View Profile WWW
« Reply #7 on: January 18, 2018, 10:17:03 AM »

It's been awhile since our last post but a lot of things have been finished and the scope has been expanded to add some awesome features.

New Trailer:



4 Player Coop is our biggest addition and is something we started working on shortly after our last post. We started messing around with it seeing how complicated it would be to add since we were already many months into development. By the end of the first day we already had a second player walking around but with many missing components of interaction and the games structure, UI, and various points of logic weren't designed to take multiple players into account.


From there we started refactoring and making adjustements to bring the game from single player to a full featured coop. It was important to us from the beginnning that the coop not be a simple asssitent or copy of the main character but their own character with their own progress, inventory, stats that can be used to continue in a single player game.

A few things like player to object interaction, throwing a boomerang, placing a bomb, collision worked out of the gate. Everything else had to be added starting with enemies noticing the coop players, chasing them, damaging them and keeping track of who their targets were. Functions that checked for the distance between something and the player had to be changed to check for the distance to the closest alive player instead. Changing map sections had to be adjusted so any player can start changing section and the others player get pulled along with them, fast travel also had to be adjusted to bring other players along. Within a couple weeks we had most of the coop functionality in occasionally finding issues over the next few months that we worked to correct. After that period every addition to the game was worked on with coop in mind.


We had the advantage of being still early enough in development that the effort to make this switch wasn't an insourmountable task. Also thanks to advice I'd learned early on the Player class was designed to contain all the logic and data for only the Player and we were careful not to let player logic end up in other handlers. Things like the boomerang handler for example were instantiated in the Player class and the Player passed itself to the handler so when another Player is added another boomerang handler is created that handles the boomerang for that new Player. Design decisions like this helped make the conversion process a lot less painful.

A few UI adjustements also had to be made the player house was redone as the Lobby House where players choose their next class and leave the room to mark themselves ready. The game over screen had to be adjusted to show the run details of all the players. Also we added in some features like the Chip In system that allowed players to contribute gems together in order to purchase a new building for the village.


A tricky part of the adjustement to coop was how to handle progress of players at different stages of the game. We chose some things to be the cumulation of all the players progress and others to be at the furthest point back of all players. Any buildings constructed in the village for example would be available if any of the players have purchased it, so if someone had the blacksmith they wouldn't need everyone else to buy it in order to keep working on their sword. On the other side of that the progress of defeating the dungeons is placed at the furthest point back of all players, this prevents boosting players but also keeps weaker heros out of dungeons they couldn't possibly do well in.


Overall we're very happy with the decision to add this feature and we now consider it a major feature of the game. We have some more ideas to make coop more interesting in the long run but playing some 4 player sessions, working through dungeons together, messing with each other, and using each others skulls as a weapon has been a lot of fun and we can't wait for more people to try it out.


I have some other features to highlight we've added since our last post that I'll go over soon.
Logged
IndieGameFiend
Level 0
**


IndieGameFiend.Net


View Profile
« Reply #8 on: January 20, 2018, 05:17:13 AM »

This looks amazing. Something me and my gf would enjoy playing together no doubt.
Logged

HeliocentricS
Level 0
**



View Profile WWW
« Reply #9 on: April 09, 2018, 10:58:52 AM »

Here's what we've been up to since our last post.

We were part of Square Enix Collective for the month of February it went really well and we got a lot of useful feedback. Seems like we got a decent amount of exposure and a boost in awareness as well which was great. Definitely recommend trying to get your project on Collective to help with marketing and feedback if you can.

We're working now towards a Kickstarter campaign that we'll hopefully start running by mid May. Trying to get more social media activity going and increasing our presence in general.

On the development front we've made a few big additions the past few months. The biggest being the Dungeon Master system and the ability to customize your village.

The Dungeon Master system watches what the players have been doing throughout the dungeon logging kill counts, pickups, events, secrets found, traps hit, which enemies are killing you and a bunch of other stats. It then uses that tracking to remark on things the players have been doing and choosing to make some actions to effect the players like spawning a chest that could be a Mimic or noticing you're having trouble with snake enemies and throwing a few more at you.

I'll go over the Dungeon Master more when that feature is farther along but for an in depth look today I want to go over the customizeable village.


We've been using the Tiled map editor, which we used for our last game (Magnetta) as well. For anyone who hasn't tried this out its a really reasonablly priced software that makes map editing in a tile based game much easier. For our cancelled project Arizona we made our own tile map editor and it was much harder to use and added another set of development work in adding features and improving usability.

Our map sections in the overworld are each their own tiled map file including the Village map which is by far the most dense. Before being able to customize the village the map had objects where each building should be and if it was built it spawned the object and also placed the accompanying objects that surround it. With adding the ability to place shops and houses anywhere though we needed to come up with a different solution.


We ended up making what we call the Lot system where there are Lot regions in the main Village map each with a unique index in the that can have something placed on them. We then made seperate Tiled map files for each building type that contained the building, accompany objects, and collision laid out in a default Lot sized map. When a lot was marked as built on we grabbed the correct Tiled map data for the building type that was placed there and spawned the building object, added its collision to the main collision layer, and spawned the accompanying objects. In order to not have a bunch of empty area where the lots would be we placed trees, rocks, and other objects in the lots and marked them to be removed when that lot index had been built up.


Now the players choose which building they want to build and where they want to place it and the cutscene starts of building that lot up.

Logged
Kebbab
Level 0
**


View Profile WWW
« Reply #10 on: April 10, 2018, 06:09:51 AM »

I'm also making a coop arpg and I'm already jealous of so many things in your trailer! Everything looks very dynamic and smooth. There's many mechanics and puzzles that seem a lot of fun. I can imagine four-man teams having a blast playing this Smiley The idea of going back to a village you have built together after an adventure sounds awesome. Wish you good luck!
Logged

HeliocentricS
Level 0
**



View Profile WWW
« Reply #11 on: April 16, 2018, 06:37:06 AM »

Thanks Kebbab, Dungeons of the Fallen looks awesome as well, pretty nice to have LAN in too we're only Local Coop right now. We're working on some more coop puzzles that only show up at certain player counts so we can make some tricker stuff. Yea making your own village with other people can be a lot of fun, now that you can customize it its cool to plan out where everyone thinks the shops should be and what aesthetic you go for.
Logged
CodeLobe
Level 0
***


Decide to Act Sensibly


View Profile WWW
« Reply #12 on: April 16, 2018, 10:04:59 AM »

This looks great!  Kiss

Creating something together builds more player value estimation than something made alone.  Lots of potential in this project.  Keep it up!
Logged
HeliocentricS
Level 0
**



View Profile WWW
« Reply #13 on: May 08, 2018, 05:46:17 AM »

Our kickstarter went live today, check it out here: https://www.kickstarter.com/projects/1983471571/rogue-heroes-ruins-of-tasos

Dynamic Z Ordering

Early in development objects were drawn in pools according to their entity type so we would draw the game scene like this for example.

Original Draw Order:
  • Ground Tile Layer
  • Ground Effects
  • Shadows
  • Objects*
  • Enemies*
  • Player*
  • Air Effects
  • Ceiling Tile Layer

Each of these would draw in sequence for each Floor Layer which allows us to have multiple 'floors' in each room like in Link to the Past. So for example you could go over a bridge then down a staircase which would change your in room floor layer then you could go under the bridge you just came over. I'll go over more details of how we used that system in dungeon generation and the overworld but today I wanted to talk about the draw order of the objects bolded above.

In a pure above head or side view perspective like we used in our previous games ordering was done mostly in the way that helped the player best keep track of the most important elements (i.e. keeping the player in front of all enemies). In Rogue Heroes though due to the 3/4 perspective drawing the main entities in a fixed order didn't provide the best sense of reality.

Early on we had players and enemies far away from each other enough with hit boxes and collision boxes so the issue didn't immediately come up but when enemies and objects started getting larger and 'taller' that simple approach didn't work well.

The solution was making the object draw order determined each frame. Instead of drawing through each entity type in its pool objects were sent to a handler we called ZOrderHandler, we added it to the ZOrderHandler list with its EntityType, Index, SubIndex(Used for multi part entities), and the Y value of the point the entity roughly touches the ground. The ZOrderHandler then was sorted by that y value to get the draw order of that frame. Then the draw order was something like:


Post Z Ordering Draw Order:
  • Ground Tile Layer
  • Ground Effects
  • Shadows
  • Z Order Handler Entities*
  • Air Effects
  • Ceiling Tile Layer

The Z Order Handler would iterate over its list and call the draw routine for the entity type.

So in each Update loop we'd:
1. Clear the Z Order list
2. Each entity type handler would update its pool of objects and if the object was in camera it added itself and relevant data to the z order pool
3. Z Order list sorts by the y value

Then during Draw:
The Z Order list is iterated over and each entity is drawn immediately calling the correct Draw routine for that entity type.
Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic