Rose client discussion 2017

Project to create a new client based on new file formats and eventually a new 3D engine.

Moderators: osRose dev team, ospRose dev team, osiRose dev team, Moderators

Rose client discussion 2017

Postby lazypenguin on Thu Jan 19, 2017 5:31 am

Hello all,

Brace yourselves, this is going to be a long one :cry:

I have been a lurker for far too long and have consistently thought about ROSE related projects for endless nostalgic fun but ultimately never contributed anything meaningful. I've created a few weak tools every time I was learning a language or had some time to tinker:


Note
I am going to ignore one of the biggest parts of the client here and that's the networking portion. It will just make my ramblings easier to not take that into account that this game requires a server but checkout PY's work on project 137 (viewforum.php?f=58) and the work on osIRose (https://github.com/dev-osrose/osIROSE-new) if you're looking for a pulse in that department.

Assets
I've been contemplating the ROSE ecosystem for a while and I've come to the conclusion that the primary part that has the most value is the old assets (Models, animations, maps and textures). The content is the nostalgic factor and probably the only reason why anybody still working on ROSE hasn't gone off and built their own game from scratch on modern technologies. I think it's safe to say that if you're like me and still lurk here and aren't learning blender or unreal or unity or something for your own game then you're not trying to make "any game" but some version of ROSE.

Landscape
So now that we've established that the assets are really the only thing worth salvaging from the old games, what are the options for maintaining/updating a custom client? I've narrowed it down to two options:

  • Build a tool set that converts ROSE formats into a common exchange format or a specific format for a new game engine
  • Build (or modify an existing) game engine to utilize the existing ROSE assets

Overview - Building conveters
For the most part this would not be a challenging task. The ROSE formats have all been reversed and well documented (thank you to all the people smarter than me who shared). There are already tools such as cssvb94's zms/zmo/zmd converter (viewtopic.php?f=32&t=4514#p48768) or xadet's revise library (https://github.com/jackwakefield/Revise) that would make some of the work easy and straightforward. Other aspects such as ripping entire scenes (NPC locations, maps w/ model locations, etc.) would probably require tools to rip directly into the next game engine's scene format. Some things such as icon atlases would probably require some glue code in the new engine but overall a feasible project.

Overview - New/Existing specific ROSE engine
The alternative to converting the ROSE assets to a new format is to write a new engine from scratch (that uses ROSE formats) or adopt an existing engine/project that accommodates those formats. I've followed (stalked) some of the more productive members and here is a summary of the options and my thoughts:

  • Custom Engine - Let's be real here, this is a huge undertaking and probably a waste of time. 3D graphics is time consuming and starting from scratch would be a waste of effort. Also, there is no guarantee that an engine that I (or any collaborators) build would be any better than the original
  • Exjam's R3E (https://github.com/exjam/r3e) - Unless maybe you're exjam. An impressive solo-project that does a lot of the original Rose rendering. Large parts of the client functionality are missing. Another big downside is that it's windows only...a step better than creating your own engine but still a lot of work would need to be added (probably why it was abandoned)
  • Rose Browser (https://github.com/brett19/rosebrowser) - These guys are really good at making me feel useless. A very cool client written in javascript and runs in a browser. It's a testament to their skills (and to the basicness of ROSE 3d graphics :roll: ). Ultimately looks like further progress was made than R3E but ultimately an incomplete client.
  • Unity Rose (https://github.com/osROSE/UnityRose/tree/brett) I think Rose is brett19's secret drug. His github is full of wonderful ROSE projects and this being the most recently updated. I haven't been able to test this yet (I tested the master branch a long time ago using unity's beta linux editor and there were stability issues) but it appears like there's a lot of work going on here. I suspect that this may be the furthest along feature-wise but probably suffers from the same fate as R3E and Rose Browser -- incomplete client.
  • Project 137 (viewforum.php?f=58) PurpleYouku released his project not too long ago of a working client and server tandem. While buggy and ugly (it's not Purple's fault!) it actually works if you spend time to iron out all the compilation issues. I honestly really hate this code-base but it is the most feature-complete since it's based on the original sources. I could spend a few more paragraphs describing all it's flaws but the main ones are: maintenance (spaghetti out the ass) and windows only.

Assessment
For the most part I've spent most of my thoughts in the "converter" option. The idea of taking the assets from ROSE and using them elsewhere seemed the cleanest. I haven't spent much time on it but I've been exploring using Collada as the intermediary format. Ultimately, I've come to realize that writing the converters will likely be the easy part (except maybe scenes? Not sure how well those would work in Collada import/export). There would still be a large amount of code to write to rebuild the "client" part, even if the engine was swapped out (see the examples above!). Things such as, UI interactions, icons, effects (ROSE effects should probably be put to pasture), AI, NPC interaction, maps, etc. A new engine does not auto magically mean you get a new client (unfortunately :( ). Furthermore, moving to a new engine doesn't mean that new tools wouldn't have to be developed in addition to the converters. Sure, maybe Unity has some nice particle editor or some UI framework but what about NPC dialogs? NPC inventory? Quests? Likely these will have to be supported by tools and what not. After fighting with myself I've started to feel that maybe converters are not the pancea I thought and simple switching engines isn't going to suddenly make things more amazing...

Conclusion
As much as it pains me, I've come to the conclusion that the most realistic project would be to adopt the original client sources and use what's provided by PY in project 137. (sorry PY, I appreciate your work but that original triggersoft source code...). Despite it's issues (legacy codebases anyone?) there's a lot of code there already written that, for the most part, works together fairly well. It even has the networking built-in which makes it multiplayer out-of-the-box. Any effort spent porting ROSE assets to a new engine feels futile to me because you won't be able to avoid the work to rebuild all the client features (equip? npc? chat? party? leveling? physics? etc.). You might as well build your own game from scratch (unless perhaps you want to use ROSE assets for a new game format -- ROSE cart racing sim anybody?).

In terms of productivity, I think the most progress can be made hacking away at project 137. Improving it's core, cleaning up its code. Theoretically the engine can be swapped out in the long term (if you really wanted to) as long as work went into decoupling the rendering from the mainline client.

And that's the end of my rant, please share with me your thoughts.
lazypenguin
Pomic
Pomic
 
Posts: 78
Joined: Mon Aug 10, 2009 6:51 am

Re: Rose client discussion 2017

Postby AnimalCrackerz on Sat Jan 21, 2017 6:34 pm

Having the handicap of actually having little to no coding background or talent.. I also entertained almost all the avenues you have out lined and agree 100% ...I feel if you have the coding background to customize the P137 source then yes without a doubt the best bet. I am still having issues after getting past alot of compiling issues (thanks guys for the tips) but yeah hands down best for adding additional functionality.
AnimalCrackerz
Pomic
Pomic
 
Posts: 102
Joined: Tue Apr 20, 2010 1:58 pm

Re: Rose client discussion 2017

Postby L3nn0x on Tue Feb 21, 2017 3:00 pm

Thing is that the legacy code is just terrible to work with. What you're saying makes sense, but that's only if you don't want to add big modifications to the game. Also the legacy code relies heavily on windows specific functions and thus would be terrible to port over to Linux. Not saying it can't be done, it just would be a real pain.

Using Unity would make sense, as almost everything is done for rendering & networking. Implementing everything in C++ wouldn't be too bad as long as you can reuse an already existing 3D engine & the networking bits from the server.

All in all it's a enormous project to undergo, whichever way you go.
L3nn0x
osiRose dev
osiRose dev
 
Posts: 111
Joined: Wed Oct 21, 2015 8:22 pm


Return to [Project] Custom client (new 3d engine, new files formats)

Who is online

Users browsing this forum: No registered users and 2 guests

cron