Weekly devlogs: Rogue Legend 2
Get Rogue Legend 2
October 24 - Archetypical Update
Now to put in all the combat stuff. I have an ability system all set up that combines elemental counters with mechanical counters. For combat builds I'm focusing on 4 main archetypes: Tanks, Healers, DPS, and Controllers, with more specific subclasses within each. You're probably familiar with the first three, but I'm taking a different sort of approach to all 4.
Tanks like to take hits and keep their allies safe. Instead of using an aggro system where you force enemies to attack you and get yelled at if anyone else is forced to participate, enemies will attack whoever they want and every class will have ways of dealing with that. Tanks will primarily try to get in the way, restrict an enemy's options to attack others, punish enemies for attacking allies by buffing allies and debuffing/damaging enemies and become stronger when they're getting hurt and allies are not. They'll place zones to enhance their allies and generally try to direct the flow of combat. Core class: Dragoon, Tinkerer.
Healers heal, naturally. Lots of games have tried to do funky things with healers, and whenever I try those games as a healer I'm always annoyed, so I think the core focus of healers is solid. Additionally though healers will also be the primary buffers, and some versions may dabble in dealing damage as well. I've always liked the concept of a healer that deals their dps through enhancing their allies. The buff and debuff system allows 1 buff and 1 debuff each per player, so carefully choosing which to apply and when will require some careful thought. Core class: Conduit.
DPS both deal damage and enhance the damage of others. Their abilities rely primarily on combo effects to eke out extra bits of damage, so properly setting up your chains and maintaining control over the battlefield will be key. Solid preparation and a plan of action will be important. Core class: Assassin, Wardancer. Which leads to...
Controllers are like a secondary purpose DPS, but they prefer to poison and debuff enemies and control the battlefield by moving enemies and placing damaging zones. Herding enemies into a chokepoint with walls of force and fire, sapping their ability to deal and resist damage, throwing them into your tanks and then draining all their health away. Core class: Alchemist.
Continue Reading in the Dev Forums >>
October 18 - Yeah, combat's feeling pretty good now
New UI is in! Looky:
Not 100% yet. There's going to be better health orbs, a compass, and less spammy crafting, but it's a definite improvement.
There's been a lot of cool stuff getting built on the freebuild server. I recommend checking it out if you've been shying away from multiplayer. It's also been seeing more traffic, so you might bump into someone.
Combat is feeling pretty good. You can play it as a souls-y twitch action game, or just hang back and play it turn-based. I tried to make it so there's pros/cons to both as well, there should hopefully be a fair amount of depth once it's all in place.
Course what all that means is "it's feeling good in my internal tests." There's still some animations and feedback missing, and there needs to be a number of abilities and progression in before a player cares, but it's at the point where I can be like "it's going to work you guys for real." It also means I can start implementing those things.
Patch notes
- Lots of combat tweaks and timing changes, as well as some AI changes
- Fixed an error with dodging
- Eye movement and expressions are now synced in multiplayer
- New UI
- Increased view distance
- Changed shield text in combat
- More in the full post below
Continue Reading in the Dev Forums >>
September 6 - Mo Players Mo Problems
Boy, was THAT ever a challenging week of code. I've decided I'm going to stop wiping saves since we're close to beta and we've had a bunch recently, so your saves should stay intact. A save failing to load should be treated as a bug and will be fixed. I've already had to write several save file converters to keep true to that this week.
Secondly, world gen is now threaded and occurs when you're customizing your avatar. So now when you start a new game it should load up pretty quick and dump you into the customization screen. You'll be stuck there until the world is generated, and you can track its progress in the corner. When I work on better world gen systems I'll likely add a visualization so you can watch the world be made as it goes. Plus there will be more customization options so you can play with it longer.
Unity's new networking system is finally in a stable enough position to use, so that's what I've been doing this week. They make it fairly easy, but unfortunately due to the nature of the game it ended up difficult. If you have a static map you get it up and running in very little time, but since every server will have dramatically different worlds from each other, those worlds need to be synched when you join. And since world files are currently around 40mb and growing, sending every joining client the entire world isn't really feasible.
This meant I had to write a lot of low-level client/server packet interaction stuff and basically abandon Unity's fancy high-level system almost immediately out of the gate. To solve this I use world streaming, where pieces of the world are sent to your client as needed. This means I needed to compress the world in realtime on the server since the packets need to be as small as possible, so I had to write an RLE compressor for chunks that gets updated on the fly as the world changes and as clients need them. That's still a bit too big when taking entities into account, so I also gzip compress them. Unity doesn't support gzip and hasn't for years for some reason, but fortunately after a bit of digging I was able to find a Unity-friendly implementation of it. The low-level RLE and gzip compressed piece of the world is then sent via a reliable fragmented channel, meaning the packet itself is cut up into smaller pieces and reaches the client at different times, then is reconstructed, gzip uncompressed, turned back into normal world data via reverse RLE, and is then finally usable by the client. SIMPLE.
I also wrote a bunch of optimizations on top of it so clients and servers wouldn't get hammered with world requests. Oh and since the packets are fragmented and packet loss is a thing sometimes the chunks just won't arrive and you're stuck with a big hole in the ground, so there also needed to be error handling for when a client is waiting on a chunk for too long. Once a client has a piece of the world they won't need to be sent it again, and can instead be told when it updates so they can update their local copy. Which is much more like normal how-it's-supposed-to-work multiplayer.
Continue Reading in the Dev Forums >>
Check out Rogue Legend 2 or Patreon for automatic rewards!
Shout outs: Stacey, mike richard, Brian Tanner, Serafina Moon, Thomas Spence, Armand Desharnais, Trev909, Bob Goode, TODD RICHARD, Iofire, Caitlin W., Damon Carrington, Mario Pizzamiglio, Phil Mehl, Wesley Muncy, elijah D. maben, R., bruschkin, Vincent Drone, thea musing, Brian Nunziato, Matt Yates, Elisa Martinez, Ryan Flagg, Jade Arrowood, Angelo Anderson, Syn21, Dave Walker, Jonathan Lekse, Katie White, JollyGamer, Tiernan Greenman, Burlyfighter, David R Abbott, Rick Marsh, Brittany DeNicholas, Amanda Kettles, Lou Bliss, Sik Makoyi, Pythor Sen, Bryson Waits, Desedent, Irate The Pirate, Mark L, Siren, AstroLass, Lizzie, Michael Hamilton, Vedie V, Mylon Schroder, Nathan, Jordan Florez, Robert Rich, Jess, Zee Livezey, Kevin, Kerry Melton, SallySparrow132, Millergendraft, Federica Frezza, Nick Soucy, Jeremiah Walker, Bryan Sheairs, chris wilson, Max Hops, Sarah Holland, Joshua David Maddox, Jennifer Smith, Packratt, Liz Fontain, Ray Bissonnette, Joe Dalby, Matt Price, Nicholas Zamora, ShortyMcgibble, Mr. Vinclair, mtnman1979@aol.com, KFB_Patreon, eric sun, Gundar Wez, Nahellion, That Video Editor Nic, bilbens baggo, Stuart, Brysen Packer, Maxwell Mayer, Thobek, XMrMonkyx ., Miss Zilla M, Jordan Brazeal, Kyle Clark, Jake Lane, Phillip P Torchia, Stefan Gottschalk's, Remora Jewel, Connor, jeremy baisch, Daniel Edwards, Zealot23, Shane Andrews, Brandon Mußiq, CJMAXP, Festus, Lisa Tucker, KingHavok1217, Mx Charlie, Justin Snyder, Zachary Burgess-Hicks, Steve Rosenlund, Ezzela1891, John Nazario, Gordon Alexander Fallon, zachary gee, Jason Clark
Their contribution stands as a beacon of hope for all adventurers!
