After an epic 6 month long battle in the Ryzom Core community to set up a Ring shard and build enough data to test and debug the Ring crash we have finally done it and the resulting fix was pretty anti-climactic. In the end we changed one whole line of code but the journey exposed us to the vast underbelly of the Lua Reflection code within Ryzom Core's client.
Some people will look at the fix and wonder why it took so long to get to that resolution. I covered some of the details above - there was no official open source Ring shard and we didn't have the data to set one up. So we had to painstakingly piece this information together. Bearing in mind that the Ryzom Core Ring shard still doesn't fully function because we're still piecing the data together. At least now we have a client that doesn't crash.
But debugging the Lua scripts has proven to be extremely difficult as once we get passed CLuaState::executeFile debugging information is essentially a blackhole. We had to harness in code to iterate through the Lua files to disocover what method call was crashing us. This was quite literally logging after each method call or variable assignment to a log file. We discovered that it was an assignment the retrieval of a ucstring member which didn't really help us since there was almost no activity on CI18N or in any of the GetUCString helpers. Lua IHM was essentially untainted.
After some complete luck we put a breakpoint in CLuaIHM::luaUIIndex and were able to step through this function to the actual failure. In this function we could discover which class, methods and members were involved by inspecting the reflected property. In this case there was a class that had been changed: CGroupTree::SNode. Down the road this has been sanitized to have the getter/setter methods for const-reference sanity. Lua has no binding for "const ucstring &" and thus panicked late in the process.
So the fix? Remove const-ness and the reference from the return value. We deleted 6 characters from a header file. Behold the fix.
Suggestion to make the Ryzom Ring availlable to everyone. I have read alot about it from postings as far back as 2007 and it is shown on your web sit, BUT it appears dead currently. You many want to take a look at a game called "City of Heroes". They released a tool a couple of years ago that allows player to create their own scenarios which allowed their characters to skill up. It was a HUGE success for them. If you take a similar approach, it may bring in new players and create new content. The most popular scenarios could be rolled out as a part of the every day game play and thus players could leave their creative mark on the Ryzom world. This process would give not only give new game play, but allow your world to grow with new content.
ReplyDeleteOne more idea would be to allow players with the skills to create new content from scratch. You would create a format/scene criteria that must be meet. The example I can best provide would be like in real world. there is a specific plot of land designated for a specific type of build. Either it be commercial or residential. The built out land must conform/blend with the existing areas building guide lines. This same methodological could be used in Ryzom Ring to create new areas using MESH like that is being done with Secondlife.com. Players would have a chance to play the new creation in a "holographic chamber" and report any bugs, suggestion and vote on it. The feedback could be relayed back to the creator, thus making changes/improvements. If the creation has been voted on enough to reach a baseline and meeting all the required specifications of available plot of land/area, it would be then tagged for review by the development teams and if all is well, could be slotted for inclusion on next build release. This methodology would save the developers a huge amount of time in creation and thus become the Quality Control Team.
“ It takes a person with vision to take something ordinary and make it extraordinary”
Sabrina,
ReplyDeleteI appreciate the input. I'll say that due to the difficulty in finding this particular bug the group that runs the Ryzom game ended up disabling their Ring shard. I also do not know if or when they'll bring that shard back online for their players.
I know this idea of engaging Ring scenarios into the real world (e.g. allowing Ring items and XP to affect your mainland character) has been talked about a lot in the Ryzom Core developer community as well as on the Ryzom player forums. I think that the problem you face is with a true sandbox MMO it is very difficult to provide such a feature without harming the balance of the game. It is a really cool idea though.
One of the things I'd like to do once I get a fully functional Ring shard (and I'm very close) is to start working on more persistent tools for players - so that select scenarios can remain running without the creator online, a scenario repository where players can share scenarios with each other and other things of that sort.
Now for your last paragraph - the one about allowing skilled players to create new content. This is an idea I have posed in the past and I think has a lot of potential. With all of the source code, tools and artistic assets released to the public there's a tremendous amount of potential for players to create their own content and I invite those efforts because the more people we have using Ryzom Core the better it will become.
Aside from the fact that players can use the entire platform their favorite game is run on to make their own variant universe one thing I've thrown at Winch Gate as an idea and an idea they haven't totally shot down is something akin to Blender Foundation's open movie projects. I think it would be a tremendous amount of fun to engage a bunch of players in creating a whole new continent for the official Ryzom world. The idea I threw out there was to get a coalition of players whom are artists, story writers and content developers and make an Upper Roots continent with all new flora and fauna and new landscape. It would be a mammoth undertaking but a lot of fun and a great opportunity for the Ryzom Core and the Ryzom community to collaborate!
Thanks again for your input.