Jump to content

Alternative RoG integration done by a sole enthusiast, VIDEO


Recommended Posts

I tried to keep this post as short as possible, but failed, so thank you for reading this in advance.

Last week, right after the Klei's DST RoG open beta announcement, I thought it may finally be the right time now to showcase the project I have been working on in my spare time during January-February this year.

Basicaly, this is a "homemade" alternative DST RoG integration.
I am not a frequent forum reader, so if someone has already did the same and it's some regular thing, just disregard this message.. I just had no time to read all the forum topics. Though, even in that case, there might still be some interesting points..
If you find it way too much to read, check out the showcase videos below, I've tried to make them entertaining and supplied with some explanatory comments.

Bla-bla-bla under the spoiler.

You may ask why doing this at all, when Klei was already on it?
First, I've started well before they came out with any concrete RoG integration plans, and I was pretty sure that caves are the first in a line.. I was wrong, to my great disappointment, and it was too late at that point.
Second reason - being a long time DS player I had an itching desire to play the multiplayer RoG ASAP, since original DST felt a little bit dull without caves and RoG feats.. Looking at the code I thought "Klei's doing other things, but this one is easy and quick to do, so why not".
Third and the most important one - I have a keen interest in game developing, game engines and open world survival games. This seemed to be a good opportunity to learn more about how this game's scripted side works, how it is organized and to have some useful Lua language practice (my main languages are C#, C++ and php).

So I've started this little educational thing as my spare time project in early January.
And of course, I clearly understand that assets and original code are all Klei's property, so no sharing or talking and I kept it private, play-testing offline with my wife and my father-in-law only.

What's the difference? Is there anything special about this?
Code-wise, most client independent parts are straight forward to integrate up to the point of mere copy-paste and obvious networked changes, and I am pretty sure Klei did these routine parts in exact same manner (I had no time yet to check, so I can't say anything specific here).
BUT. Integrating other complex, networked, player related things presumes that there may be and will be some significant differences in problem's solution. For example I thought it would be a good idea to redo and optimize moisture system, or transformer component etc. That's the first point. It will look the same at the first glance, but is done differently or behaves somewhat differently.
The second point is the (understandable) magnitude of the original RoG bugs. Every software developer is a perfectionist on a sublevel, so while doing the integration I couldn't resist and fixed many non-integration related bugs I have run into, both DST's and original RoG one's. I am not perfect at all, in fact there is a list of still unaddressed rare bugs.


What has been integrated?
Everything RoG. Except mole vision and two RoG characters. The mole hat requires a wormlight from the caves, and is difficult or impossible to integrate without some changes to core code. And doing characters was not a priority since I didn't think we were eager to play them.

So here is a full list of completely integrated features and entities.
Some remarks (I rely on my memory here):
bugfixed = non-integration related bugs fixed
MP = multiplayer related changes introduced (don't confuse with networked changes)
optim. = optimization changes

FEATURES/COMPONENTS:
player moisture (optim., redone)
moisture and sun shelter (optim.)
world moisture (optim., redone)
inventory moisture, moisture listener(optim., redone)
moisture meter
slippery tools and weapons
puddles
waterproof items
new seasons
world customization, tuning override
worldgen: tasks, rooms, static layouts, traps, scenarios
spring mods: growables, crops, combat, propagator etc.
spring hunter changes (bugfixed)
weather, world temperature, precipitation changes (bugfixed)
colorcube changes
playerlightningtarget changes
shock fx
spring ambient light
dynamic music changes
heatover widget
temperature, heater comp. changes: player, heatrock (bugfixed)
burnable structures (bugfixed)
burnable containers
withering and rejuvenating
crops withering
fertilizer rejuvenating, protecting
wildfires (MP)
pollen
smoldering smoke
player, rain and smotherer smothering
ranged smothering
ranged lighting
ranged and ice extinguishing (bugfixed)
temperatured food
summer perish rate
frograins (MP, partialy redone)
ambient sound changes (bugfixed)
ambient attenuation (bugfixed)
new biomes ambient and walk sounds
mud walk sounds
umbrella, parasol, eyebrella rain sound effects
shelter rain sound effect
seasonal DSP
trap starvation (bugfixed)
stewer spoilage (bugfixed)
dryer spoilage (bugfixed)
dryer rain pause
wet food
wet fuel
feedable pets
etectric stimuli combat
electricaly insulated wearables
frozen objects, melting (bugfixed)
ice hat refill
wx78 changes
secondary type fuel
penguin spawner changes (bugfixed)
lureplant spawner changes
flower spawner (MP)
buzzard spawner (bugfixed)
transformer comp. and full moon features (bugfixed, optim., partialy redone)
basehassler comp. changes (MP, partialy redone)
basehassler warning (MP)
worldstate comp. changes (bugfixed)
mood comp. changes
herd comp. (bugfixed)
timer comp.
entitytracker comp.
guardian comp.
bigfooter comp. (MP)
groundpounder comp.
groundpoundring fx
worldwind comp.
blowinwind comp.
circler comp.
firedetector comp. (bugfixed)
fan comp.
some non-RoG related features, fixes and updates

ENTITIES:
deciduous tree, monster and root (bugfixed, optim.)
birchnut drake (bugfixed)
acorn and cooked acorn
trailmix
molehill
mole (bugfixed)
guacamole
glommer statue (MP)
glommer
glommer fuel
glommer flower (bugfixed)
glommer wings
bell blueprint
glommer bell (bugfixed)
bigfoot (MP)
catcoon den (bugfixed)
catcoon (bugfixed)
catcoon tail
catcoon hat
deciduous turf
desertdirt turf
cactus
cactus meat and cooked cactus meat
cactus flower
hawaiian shirt
flower salad
tumbleweed spawner
tumbleweed
buzzard (bugfixed)
circling buzzard
lightning goat herd
lightning goat (bugfixed)
lightning goat horn
nightstick
nightstick fire
sparks fx
goat milk
icecream
mandrake (bugfixed)
strawhat
transistor
warg
hot chili
wathgrithr hat
reflective vest
grass umbrella
bone shard
bone/skeleton loots
fertilizer
rain coat
rain hat
eyebrella hat
siesta hut
cold fire
cold firepit
heatrock updated
ice rock (bugfixed)
ice puddle
ice splash
inventory ice rocks
ice hat
firesupressor (bugfixed)
firesupressor projectile
watermelon and cooked watermelon
watermelon hat
watermelonicle
Goose (MP)
Goose egg (MP)
Goose nest fx
mossling herd
mossling
Moose feather
feather fan
tornado
tornado staff
dragonfly (bugfixed, MP)
lava spit
dragon scales
dragonfly chest
dragonfly armor
bearger (MP)
bearger fur
bearger vest
icepack


Features were integrated one at a time, carefully tested in all possible situations, debugged and fixed if needed by me. Again, all these are Klei's original single player RoG property.

More bla-bla-bla under the spoiler.
What about Klei's updates?
Originally I started working on build 120something and finished with 126042.
I kept all changes clearly indicated, so doing code merge is relatively easy and quick process for me, for example editing the following sample videos took many times longer. I stopped at 126042, because i had too much other things to do recently and felt lazy. Probably I will do another merge shortly.

Well, the result of all this is that on February, 19, me and my small "test team" of loved ones (very much excited as you may imagine) succesfully started playing in our first RoG world, mostly feature-complete, missing moisture system and Giants, which were gradually, but promptly introduced later. We still play this game daily, approx. 10 hours a week.


So million words can't say what a video can show.

The first video was specifically made for this showcase, we started a new RoG world from scratch last week and played 100 days in it in 5 real days. The video is unique in itself as it covers all 100 days of real gameplay in approx 1.5 hours video, without any cuts or gaps, just partially accelerated to skip all the boring gameplay. This way you can see that the game is stable, there are no any game-breaking bugs or failures.
If you have played Klei's version (I am not), try to spot any differences. I am sure there MUST be some.
Giant action is at 37:00, 1:14:00 and 1:28:00. Bigfoot action is at 1:34:50 and more closer to the video's end.



The second video is a shorter supplementary video, showcasing the original test world we have started on February, 19 with some additional Giant action at 01:25 and 05:22.



Again, thank you for reading. And sorry for my English. If you have any questions, feel free to ask.

And one last note. Why am I posting this message and video... I don't know. May be the urge to share my experience with someone interested. So that's it. And thank you, Klei, for this entertaining and educating experience I had.

That's amazing. A bit scary, but still amazing. Congratulations, man. You should be hired, because that takes a lot of dedication. Klei, Hire this guy now.

You know one thing that you got done and Klei didn't; you didn't make RoG a requirement to play DST. It's kind of lame not being able to play vanilla after updating to RoG, like cmon! Why, Klei?!
I'm quite sure that is going to be possible once RoG leaves Beta Beta Beta(Beta?).

I'm quite sure that is going to be possible once RoG leaves Beta Beta Beta(Beta?).

 

Nah. They said they'll keep only RoG either way, but will try to make a preset, which will alter options to make the world look as Vanilla as possible.

 

Goodbye proper Vanilla DST :'(

Not sure why people like vanilla so much. It's not very challenging and gets boring fairly quickly. RoG is a huge improvement.

 

Personally, I think everyone should play vanilla until they get past their first winter successfully with no mods, and no spawning-in helpful things. 

 

In other words, everyone should be noobs like we all were before RoG was released.  How did all the veterans GET to be veterans other than by playing many hours of now-boring vanilla until we got good enough to move into RoG and learned how to get through winter all over again?  And then faced summer!

 

I never want to play vanilla again, but I am damn glad I had about 600 hours in it before RoG, and I would hate to deny others that chance at fun.

Not sure why people like vanilla so much. It's not very challenging and gets boring fairly quickly. RoG is a huge improvement.

Yeah, but it's DLC based. Not everyone is pro enough to play RoG. And not everyone likes the idea. Sometimes it's best to keep the classic flavor for a game ;)

 

Just noticed: PCT's post has been removed. LOL!

First of all congratulation on the work you have done. However I must remind everyone this was a private (and still is private) version of DS:T that the OP has cooked up. Before people start labeling Klei for not being able to get this done faster then they should of. This was a hobby of the OPs and not a job with a work schedule. Also this had a limited testing pool for being a private project. I am certain there are bug and other issues that would arise once this went public. Not to mention how this would be for cross OS platform activity (beyond whatever the OP was using).

 

“And of course, I clearly understand that assets and original code are all Klei's property, so no sharing or talking and I kept it private, play-testing offline with my wife and my father-in-law only. “

 

I'm sorry, but this is a little hard to swallow. You do realize there are mods out there that are adding things that aren’t necessarily been coded into DS:T as of yet (including stuff for RoG)? Now I understand this is a total rewrite instead of a simple mod. However if you contacted Klei, I am sure they would have given you the green light to make this public. They have always been open to chatting with it's player base, unlike most other game developers out there.

Not sure why people like vanilla so much. It's not very challenging and gets boring fairly quickly. RoG is a huge improvement.
Old Bell and Summer. I can turn off Summer, but it'll always be awkward to mess with spring without summer, and the glommer statue will always be there. 

It`s no magic what the klei-programmers are doing.

Every half-skilled programmer should be able to copy/paste&adjust a code.*

 

He may have been faster(?) with his project, but I´m pretty sure thats because he invested more time and enthusiasm in his work compared to some guys who´re just paid to deliver something on schedule (no offense, but prove me wrong, if you keep thinking about work-related stuff in your free-time^^)

 

 

* : TO mentioned something about "everything RoG", but I havent seen any caves in his video - only the bulb-flowers in the swamp and some spawned items/structures at the end. Also the night-vision is missing.

So he "only" managed to add items/objects/mechanics similar to how DS was transformed to DST. (e.g. see how the code of DS-Monsters was changed for DST, and change the RoG-Monsters' code the same way)

The trick would be to find a way to transform a new mechanic, like multiple worlds (=caves), to multiplayer.

 

 

tldr: I am impressed that he did it - but, in my opinion, it is not impressive what he did.

(although I´m curious about what the DEVs response to his post was/is/will-be ^^)

 

 

 

I wasn't sure if anyone will read or watch the video at all, so thank you, for all your comments!
 

Before people start labeling Klei for not being able to get this done faster then they should of. This was a hobby of the OPs and not a job with a work schedule. Also this had a limited testing pool for being a private project. I am certain there are bug and other issues that would arise once this went public. Not to mention how this would be for cross OS platform activity (beyond whatever the OP was using).


You are absolutely right here. It was a nice hobby project challenge to take up, now it's complete and that's it. Still some people think that my version is better and keep asking for it. They are totally wrong. Why?

1) This is not a mod. You can't play it online as a mod. You can't install it over the latest Klei's integration or the latest vanilla DST. Too many differences, manual merging is needed for every build. It's like a separate game you can play with your friends only on your LAN only.

2) Yes, it was done differently, but I am sure Klei will do the integration and the game ways better and in a very short time from now. They have everything to do this the right way. Just be patient. There is a lot of not so obvious coding work done behind the scenes just to make it a good experience for everyone. And I am not doing this, I am more concerned about our personal experiences, so if it suits us, it's good.

At the same time, I can't totally agree with "a limited testing pool" sentence. In the multiple different platforms and configurations context, if you meant this...

 

YES, you are right, if you have a large testing pool, it will always be a much quicker bug detecting process.
And NO, all RoG code changes reside in scripted part (game logic) and it is application layer independent. All platform and harware dependant bugs, lower-level network bugs reside in application layer. I rely on Klei's "not so obvious coding work" done in that layer. But in this very case I don't need an access to the application layer's C++ source code, and I don't have an access and it is absolutely untouched.

On the contrary, scripted side CAN be 100% perfect for everyone and everythere. So if you have a rare bug in the GAME LOGIC(where all my work is done), it will be a bug for everyone. If it's a logic or a high-level scripting bug, anyone can reproduce it on their's machine or console. So if I fix or mess up something, I fix or mess it up for everyone.

 

Going public from limited testing pool in this case will only expose bugs which I haven't noticed myself or my small team just had no opportunity to run into. Shame on me then, this means I didn't test it thoroughly with all the debug tools I have. I can't be 100% perfect, but theoretically it is possible without any testing pool at all. But in reality there will be a plenty of RARE bugs of course, affecting everyone.

 

BTW, RoG had some obvious logic bugs, which can be easily exposed, even by a very limited testing pool. This is understandable, given the limited time devs had for testing before and after the original single player RoG release.

And that's why it is absolutely impossible to do this:
 

New Challenge, making Multiplayer Mark of the Ninja and Invisible Inc. you have 2 months.


Even if I'd be granted a full access to the application layer, this is an impossible task to do in 2 months! It took much more time for a group of people, familiar with their creation from the begining, to make Don't Starve a multi-player game. On the contrary, RoG is just a scripted part addon.

It`s no magic what the klei-programmers are doing. Every half-skilled programmer should be able to copy/paste&adjust a code.*

This wasn't a copy/paste and adjust job only. But largely it is, and boring it was.

Still some parts required a lot of improvisation, taking some time and providing the entertainment.

(That is the reason for integration's incompatibility BTW.)

Add to this the original RoG bugs fixing job. I just couldn't leave it in the state it was, and this job wasn't a pleasant one, especially if you don't have access to some particular debug tools which would make my life a little bit easier.

Oh, and ask Klei about theirs 2 months of "copy-pasting". Too much have to be changed and fixed.

And they had all the knowledge. I hadn't. I never made a single addon for this game before. Half of the time I was studying the code, not writing or changing it.

 

TO mentioned something about "everything RoG", but I havent seen any caves in his video - only the bulb-flowers in the swamp and some spawned items/structures at the end. Also the night-vision is missing.

Caves are not part of the RoG, you should have known this. RoG intention is to extend an overworld content, not caves. And there is a techical reason I can't integrate caves by myself. This requires changes to the core C++ code, I don't have access to that. But if you have a little bit more C++ code at you disposal, it can be done quite easily and in several different approaches. But Klei is already on this, they know better and I think I had enough, I won't do this again for just 3 people, even if I could.

How can I prove that everything RoG is integrated? The video proves a lot, but if you look closely at the single player RoG's folder structure, you may see a folder named DLC0001. This folder encloses all modified RoG code. This is intended, so it can be easily installed over vanilla DS and user can switch between them. Nothing RoG is outside this folder. And everything in that folder was carried over to DST in my integration. I have checked. Twice. Except characters and mole vision, which I clearly noted in my first message. There is a full list of integrated features provided in the first message. I haven't specifically mentioned some very minor changes, but they are all integrated. You know, quite a frightening list to watch at, when you have only 10 or so features marked as "implemented".

 

So he "only" managed to add items/objects/mechanics similar to how DS was transformed to DST. (e.g. see how the code of DS-Monsters was changed for DST, and change the RoG-Monsters' code the same way) The trick would be to find a way to transform a new mechanic, like multiple worlds (=caves), to multiplayer.

Of course, things(entities) integration is similar, we are not talking about different games here, and I have no access to application layer, how can I integrate these similar things differently? I am very limited in that aspect, in most cases I can only improve/fix their behavior, so if you need a real game changes and a real integration "fun", take a look at components. Do you have an idea of how much they have changed since SP RoG release and DS went multiplayer?

If integrating moisture system and optimizing it (actualy redoing it) wasn't trick enough.. I don't know. Try doing it yourself for a start. More over, try doing it a copy-paste style(proposed by you). With all dependencies of course. Then try to completely overhaul it, do it the way you see it (including naming changes) and do it again, with all the dependencies. It wasn't challenging for me, but is very interesting how you will manage this mere copy-pasting job.

So what about Caves... from amateur player's point of view caves integration does seem to be "complex" or "global" and "not similar". And devs labeled it "hard to do immediately", so you do think it's something technicaly more challenging. Technicaly, I wouldn't think so.. Though I can understand well why Klei postponed it in favor of RoG integration and other things.

 

tldr: I am impressed that he did it - but, in my opinion, it is not impressive what he did. (although I´m curious about what the DEVs response to his post was/is/will-be ^^)

Thank you. In no way I do think I did something special.. You know, one of the (properly) exposed scripted part's goals is to be easy and intuitive to navigate and modify by a "half-skilled programmer". Klei succeeded at that. The game is fun to modify. And for me, it was an educating and entertaing project. Period.

Now I know this particular game's scripted side very well, how it is all interconnected, how networked scripted parts work, how and what was exposed. And how to implement or fix anything my "testing pool" requests. That was my goal.

Darkded my post was not degrade what you did, or for you to get offended by it. If that is what you were thinking then that was in contrary in what I was trying to do. I was basically putting a disclaimer on what your post should mean to those who want to start throwing stones at Klei. It was targeted at a few people who were taking your work, and being numbskulls with it. Not just in your thread, but in others. For example it was happening in threads about the official RoG beta updates. Questioning why it was easy for a single person could do it, and yet we still don't have thing like the Giants or Moogles in right now.

 

The main point that was actually directed towards you was the second paragraph where I quoted you saying:

 

"And of course, I clearly understand that assets and original code are all Klei's property, so no sharing or talking and I kept it private, play-testing offline with my wife and my father-in-law only."

 

I found it a bit strange for a person like yourself coming onto the official forums, a player in the current DS:T beta, and being a general fan of DS that you did not have any knowledge about Klei's openness with it's own community.. As I was trying to point out Klei is far from being something like Nintendo. I mean have you seen the steam workshop for both DS and DS:T? Or even the Klei DS community mod sub-forums? I think they would have been okay with what you were doing and you could have shared it with community sooner rather than later.

Even if I'd be granted a full access to the application layer, this is an impossible task to do in 2 months! It took much more time for a group of people, familiar with their creation from the begining, to make Don't Starve a multi-player game. On the contrary, RoG is just a scripted part addon.
I was just joking about. Everybody knows only Seth can be the one to make every Klei game multiplayer.

So what about Caves... from amateur player's point of view caves integration does seem to be "complex" or "global" and "not similar". And devs labeled it "hard to do immediately", so you do think it's something technicaly more challenging. Technicaly, I wouldn't think so.. Though I can understand well why Klei postponed it in favor of RoG integration and other things.
I wouldn't really say it's hard to do. I think it's just a lot more resource intensive for lower-end PCs(like mine), and could be a bit problematic.

Well, just implementing caves in a way that they're functional probably wouldn't be hard. The issue is making them actually work well and in a gameplay friendly manner with the issue of multiple worlds and multiple players. And even if they're put on the same world layer, there's cpu matters, etc.

Caves is problematic for the simple reason they don't want to go down the road of everyone joins the person who goes down into them. They want people to be in both the overworld and caves at the same time (as Tumalu pointed out in the post above me). Kind of like the overworld and the Nether in Minecraft. From what Kevin has stated repeatedly and apologies to the current DS:T team for, is that caves was originally hacked into DS for a single player experience. Multiplayer was the last thing on his mind.

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...