Pre-Release Update 1: Dev Grunt Work

- (9 min read)

Note: This is a development blog. As such, anything shared here should be considered a work-in-progress and can change at any point.

Header Image

Since our introduction post we've been slowly at work on various parts of the project. For the past two weeks we focused on play testing and cleaning up various issues in the code and asset files. In our play testing to we tested the experience from level 1-20 which helped shape some new design discussions. We also began work on our revamp of the Artisan class!

Feature: Character create changes

One feature we managed to finish this week was one we introduced in the introduction post. Now when you create a new character you select your job in addition to the other options.

Char Create

We also made the change to have players spawn directly in adventurer's plains. We felt this aligned better with the narrative since we're no longer spawning as "visitors", it doesn't make too much sense to spawn on the "visitors" island. At this time we don't have any specific plans to reuse the island but it's definitely something we will visit in the future.

In adventurer's plains

Play testing

To get a better feel for gameplay, experience rate, drops, etc. we conducted a few rounds of playtesting with different characters. We tested a couple of variations of experience rates, buffs etc. For example, we created a set of "buff scrolls" based on the originals to give us a base for different stat values to experiment with.

Playtest buff scrolls

We also tried the goddess buff that we previously introduced. Each time we used a new character and started from scratch so we could play the game as a new player would.

Playtest character - let's grind

After a couple of rounds of testing we developed a good sense of how our version of the game "plays". We also identified a good exp rate and a good set of base stats we want to apply globally. Here are our notes from the play test:

  • 400 exp rate is good (4x default iROSE rates)
  • Monsters are STRONG, leveling without potions is very difficult
  • Due to an increased exp rate and needing to buy pots we often ran out of money
  • A scaling buff like the goddess buff doesn't improve the "grindiness" of the game
  • We need to apply a global "buff" to base stats
  • Default movement and attack speed are too slow
  • Crit is overpowered

We already have some plans and things in the works to improve some of the things we discovered in the playtests. More to come later!

We also identified some issues in the current skill point system we have implemented and identified a bug causing low skill damage. In future play tests we want to re-evaluate the leveling experience with the skills system improved.

Leveling without skills is hard...

Leveling is hard

Gunslinger

One big part of ROSE Online is crafting. One of the main goals is to farm materials to craft items and hope for a good stat on them that will give you the edge over your opponents. It's such an integral part of the game that most players often spend the time to level up their own artisans. This means that players sometimes have 4 characters in their arsenal of accounts! One cleric, one fighter and two crafters. One crafter specializing in success rate (CON) and one specializing in chance (SEN).

For the same reasons we believe being forced to dual-client with a cleric shouldn't be required to experience the game, we feel that players shouldn't be forced to level up an artisan to be able to craft their own items. As such we will be improving the crafting system so that the crafting options are available to all players.

As a side effect of losing its crafter status, we will be reworking the artisan class into the new gunslinger class. This will be a new combat class that specializes in dual-guns. We are still in the early design stages and will have more info in the future, in the meantime here are some in-progress screenshots of the new dual-gun animations.

Gunslinger Gunslinger

Gunslinger Gunslinger Gunslinger Gunslinger Gunslinger Gunslinger

Bug fixing

We're constantly fixing and finding bugs. While we know that nobody would ever see these bugs since they will all be fixed before release, we thought it might be fun to share them regardless:

FIXED: No hair bug

We enhanced our packets for character creation which caused problems with some characters not having hair...We fixed that up nice and quick!

Hairless bug

FIXED: Bad consumable icons bug

We took some of the ROSE content from the now dead NaROSE server. As a result we had some issues with the assets we needed to fix. Such as sword icons being used for consumables!

Sword icons bug

FIXED: Socket jewlery bug

We fixed up some problems with dropped items having slots and stats but for a short time afterwards we had "socket" jewlery that had no sockets...

Socket bug

FIXED: Bad refines icons bug

We initially had a problem with refine icons looking strangely like crossbows. Now they look great!

Refine bug Refine bug

IN PROGRESS: Slo-mo bug

One long-standing ROSE bug has been one related to its rendering that causes inconsistent rendering speeds. Players might experience this as a "slo-mo" effect where the game temporarily renders extremely slowly until it catches up. Alternatively the same bug can occur with the opposite effect where the game renders very quickly in a short burst! This is a complex bug that is at the core of the ROSE engine and while we haven't spent too much time on the fix yet we have been investigating it.

Slo-mo bug

IN PROGRESS: Night time bug

Currently we have some funny behavior with our day/night cycles where it will change inconsitently and suddenly. This results in things like candle ghosts spawning during the day or it immediately turning to night as soon as you alt-tab back into the game. We're looking into this bug as part of our bigger effort to sync the client with the server better.

Night bug

Technical

Besides play testing and the character select features most of our progress has been technical or bug fixing this iteration. While this might not be very exciting from a player perspective, some of the technical improvements we are making serve as the ground work for future development. For those interested, we share some of the highlights here:

Refactor of some tables

We've done an initial pass of the account database to refactor it complely. While we anticipate we'll need more fields later this is a much needed improvment over the default table. It also gaves us the chance to remove many extra functions and stored procedures that were not needed.

Refactor character table

For those who worked with the original ROSE files, they will be well aware that the game stores most of its data into the database as binary blobs. As part of revamping the character create logic we removed some values from the binary blobs into their own columns. As with the account table, this allowed us to remove more cruft from the database and code.

Better avatar database

These improvments build on the new ODBC wrapper functionality we've already developed.

New GM command framework

We implemented a new GM command framework that was inspired by the one implemented at osirose-new. This new frameworks makes it much easier to create new GM commands and implement their functionality. It also lets us share commands between the client and the server, allowing us to create client-side only commands.

New command structure

While we've only implemented server-side commands currently, we're looking to add a new command system for the client that will allow the user to control many of the engine's rendering features (e.g. disable glow, effects, etc.).

Our new rates command:

Rates command

Server game config

One goal is to make the code more data driven. We already implemented a new config system but we started to extend it to allow modifying base game content. Currently we've added support to set some base values for the calculations but the integration is still a work in progress.

Server config

Tooling

These past two weeks saw improvements to our pipeline tool. Some bugs were fixed and functionality was enhanced for the "bake" subcommand. We use the bake functionality to store our game assets in non-ROSE formats (e.g. csv, png) and convert it to ROSE formats as needed!

Bake

Improved client movement speed sync

We wanted to begin making changes to support adjusting many of the base calculations for the game (e.g adding new base amounts from config). However the way the code is currently designed the client makes a lot of its own calculations. While this can improve network latency it does make the client more complex and bug prone. Also, with new internet speeds, these kind of optimizations from 2003 don't have as much value. As such, we are planning to minimize the amount of calculations the client does. In our initial work we've already removed the movement speed calculation from the client.

Our sync work piggy backs on existing development efforts to revamp the network code.

Send movement speed

Conclusion

We hope you enjoyed our updates! We are making slow-and-steady progress to release a high-quality server and we hope that we can open up soon for everyone to start playing!

Don't forget to join our mailing list on https://www.rosenext.com and our Discord Server! If you'd like to keep-up-to-date on our blog posts then please checkout our RSS Feed.