With the last update to NovaExt on May 16, 2019, everything I wanted to control over Ragnarok Online client is basically there. From drawing on to the screen, to memory edits, to packet support, the project grew into a fully functional client mod. In order to expand your user experience, I will have to take the time and rework the core functionality. I will try to outline my future visions with NovaExt 2.0.
User Interface for NovaExt
One of my most gripes with Ragnarok Online is how inefficient the UI is drawn by the client. In case you haven't noticed, you more UI elements you have on your screen, the lower your FPS. Let me show you an example of a client with many windows open vs nothing.
All Windows Open
No Windows Open (by press F12)
This is about 70 frames lost because each UI element drawn constantly requests data per frame that is drawn (such as showing your stats accurately). This is an extreme waste of resources. Utilizing the existing client's UI for NovaExt will only add to this problem. To mitigate this, I'm working on a fully new UI framework in order to customize NovaExt. It will look exactly the same as the current game's UI. So no more fussing around with in-game commands or configuration file editing!
It is 2019 and it boggles my mind that Ragnarok Online still uses DirectDraw and DirectX7 to render the screen and graphics. Strangely enough, Gravity once used DirectX9 in its trial run long ago. Hence why your RO folder contains D3DX9_42.dll and D3DX9_43.dll. But it was quickly ditched in favor of DirectX7 due to frame rate stability. I'm planning to reinstate DX9 to Ragnarok Online. From my initial tests, frame rates skyrocketed to 4,000+ FPS. Obviously there is no need for FPS that high, but imagine a huge WoE where FPS matters without hindering critical information required on the screen. This means no more drastic minimal WoE GRFs with every effect imaginable off.
What makes this different from something like dgvoodoo? Well, dgvoodoo, like other DirectX Wrappers, simply intercepts the DirectX7 functions and converts them into a newer version of DirectX by emulating/converting the data passed through it. This does not remove DirectX7 and sometimes causes performance loss due to extra time to render the screen. With native DirectX9 support, there won't be a loss in performance but rather a performance gain with extra perks:
DirectX9 supports sprite functions which was used in Gravity's tests which leads to higher frame rates
GPU will now greatly impact frame rates and performance when running RO with DirectX9
DirectX9 enables the game's resolution to exceed 2048x1536 (a resolution cap previously set by DirectX7)
Don't worry, DirectX version will be selectable through NovaExt in case your circumstance does not allow DirectX9. However, this will be exciting to achieve for Ragnarok Online and help push the game past its ancient technology.
The last update to NovaExt, packet support was enable. This opens a vast amount of opportunities in enhancing the user experience. Displaying timers is one thing but packets can do so much more:
Real time translation of NPC dialog
Not displaying items on the floor (WoE)
Party / Guild / Main / Channel chat filtering
Display extensive monster information
The possibilities are endless.
Game Input / Profiles
There is room for expansion in RO in terms of game user inputs. One of those features I would like to add is self casting with a single key press. Healing yourself in the midst of a huge party can be difficult if you are potato like me and forget you can heal through the party window. Plus, it takes up time to hover and click when you just want to quickly use a spell on yourself. NovaExt 2.0 will contain the option to hold down an extra key of your choice in order to self cast. For example if Heal is on your W key and you set the self cast key to be shift, now you can hold down shift and press W to instantly cast heal on yourself therefore saving you a click.
Also, turbo keys presented problem in itself which is people have many builds and characters. With the customized UI mentioned above, I will plan to add profiling feature which will allow the user to save multiple profiles of NovaExt settings suited for each of your characters and builds. It can be automatically changed based on character name or manually changed based on preference. Profiles will not be limited to just turbo keys but for all aspects of NovaExt settings.
User Feedback and Troubleshooting
To conclude this post, I want to express how important suggestions and feedback are. I have not forgotten the suggestion thread. NovaExt 2.0 will contain majority of the suggestions posted in that thread. Also, I will be reworking how suggestions are made with a point system to better gauge the popularity in order to shift priorities accordingly.
Lastly, the troubleshooting with NovaExt will be greatly reduced. The most common problem is not having the correct Visual Code Redistributable installed. Moving forward, I will compile NovaExt combined with the necessary DLLs to avoid this problem. Also, the debugging process will be worked to better notify the user what is wrong with NovaExt usage so that he or she may resolve their issue quickly on their own.
The timeline for NovaExt 2.0 is currently not set in stone, but I am aiming for the end of summer. However, there is other tasks that are being prioritized for NovaRO such as Mac/Linux support and server code enhancement. I hope you all will enjoy to whats to come with NovaExt 2.0.