Cryofall Map Modification?

Started by ninekorn, September 26, 2019, 09:12:27 PM

ninekorn

Hi,

I am getting annoyed by my personal projects. Recently I've had a ton of "lacking knowledge" to move forward on a physics engine, on my VR Texture2d to Geometry shader for minecraft type of terrain... etc... I am getting so annoyed and the next step in Void Expanse is a pain too. Gotta create colliders out of blender made destructible station parts by calculating the width and depth of object inside of blender using Python... I didn't start writting a script for that, i got annoyed before i started.

I read the Cryofall Forums Posts and Mods a bit and wanted to get more info on the current capabilities of the Cryofall engine. The last time I tried to build a server, my goal was to remove EVERYTHING from the game except for the player and the MAP. My goal was to find a way to modify the map OR create another "instance" of the map so that players can move from map to map. My goal was to understand the Core of Cryofall before re-adding the assets. I failed and left Cryofall behind.

My questions are:
1. Do you have any plans to make Cryofall kinda "infinite 2d terrain"?
2. Do we already have access to API that modifies the terrain size?
3. Do we already have access to API were you can create a second MAP from script and have access to it from ingame?
4. I think I saw that RPG Maker MV and maybe the other engines in the RPG Maker series have maps of Limited sizes but where you have the ability to make Multiple MAPS and have access to them IN/OUT fashion and still have the ability to control the AI from different maps. Can this be achieved in Cryofall and/or if it's not incorporate yet, do you have the plan to incorporate it?

I checked the forums a bit and didn't see a similar post. Please point me to any post that could be relevant to the subject if there is already some on that subject. I want to change my hobbies a bit AKA VoidExpanse/FAil Personal project 2D Physics Engine (Lacking knowledge on Mathematical equations relating to velocity and angular velocity)/ or API of SharpDX....

Thank you for your time in answering.
nine

Lurler

Quote from: ninekorn on September 26, 2019, 09:12:27 PM
1. Do you have any plans to make Cryofall kinda "infinite 2d terrain"?
2. Do we already have access to API that modifies the terrain size?
3. Do we already have access to API were you can create a second MAP from script and have access to it from ingame?
4. I think I saw that RPG Maker MV and maybe the other engines in the RPG Maker series have maps of Limited sizes but where you have the ability to make Multiple MAPS and have access to them IN/OUT fashion and still have the ability to control the AI from different maps. Can this be achieved in Cryofall and/or if it's not incorporate yet, do you have the plan to incorporate it?
1. No, no plans for the base game. But ai_enabled will be able to answer whether it's possible or not.
2. Yes, it's already possible and we use it all the time when expanding the map. Please use the editor - one of the tools does exactly that.
3. Not yet, but it's planned in the future.
4. I'm not exactly sure what specifically you are asking here, but I think my answers above should cover this one as well.

Please let me know if there's anything else you'd like to know and I would be happy to answer.

ninekorn

Thank you so much for your answer Lurler. I am looking forward to this and will continue checking  how the API works.

ai_enabled

Hello!

1. Not possible. The reason is that there are multiple optimizations in place in order to ensure perfect performance on a server which is hosting 200+ online players for weeks without any need for server restart (and without any risk of crash). We're ensuring 100% smooth operation without any hiccups/CPU spikes.

2. As Lurler answered, there is API to expand the world size. It's intended to use only in Editor.

3/4. Currently, the game can run only a single world instance. We're planning to implement support for multiple mapsΓÇöit's necessary in order to provide separate locations like caves, mines, bunkers, laboratories, etc.

Regards!

ninekorn

#4
Thank you for your answer ai_enabled. I am looking forward to that implementation on point 3-4. I have been looking through the API and messing around a bit with it but mostly achieved nothing. I shouldve started modding the game sooner. Now its like a needle in a haystack to find the "main server update function" which i thought i had found (i think in bootstrapper) but i cant even debug anything on the console. It just doesnt work. I was trying to fiddle a bit with the world creation but then noticed its gonna be harder than i thought as there is a specific file "Cryofall.map" that is used for the server world. And it seems to all be related to "server map" and not client "change map" kinda system.

The game is already so huge and so much code.

ai_enabled

Alas, there is no documentation yet but we've done our best to make it well-structured and as clear as possible. You're right, it's a huge game with hundreds of thousands of line of code even in Core.cpk (the open source part of the game).
Regarding the debuggingΓÇöyou can simply attach with Visual Studio to the game process (Menu Debug->Attach to process) and set breakpoints (F9 key) on any line of code you wish to stop the game. Then you can simply point on anything and see its current value, or use Locals/Watches in order to browse all the variables.
To log anything you can use Logger.Dev("text") method which is very similar to how it works in VoidExpanse. With Editor you can check the console (~ key) and use filters to search for anything or filter by log severity.
The game is pretty complex as there is no exposed main thread method which you can see. Everything is updated via according ClientUpdate/ServerUpdate methods (which are virtual, so sometimes you need to go up in the classes hierarchy to see their code) plus there are Systems which are often subscribing to a timer trigger to perform the work regularly (such as health regeneration, structures decay, etc). Bootstrappers and "Prepare" methods are used only to prepare everything after the scripts startup.

Regards!

ninekorn

I was able to finish the Front Skeleton Animations without IK, its not as good as the original but it should be a good start for a V1.0 Skeleton Mod Swordman. In the future ill add all of my other Skeleton Assets Archer/Axeman and also add my Void Expanse Pathfinding code. I'll continue to try and adapt to this new engine. And geez, you really went overboard on this engine. It's really complex. I'm gonna have a hard time adapting.

My goal was to bring Cryofall's current Visual Studio Project to its most basic form to understand the core but even that is so complicated lol ;). Meaning i want to know how to add new menus, change the existing menus, i want to learn how to add projectile sprites for the Skeleton Archer, add blood for damage on Animal/Human Mobs... I wanna learn the zooming of the map, and many many more things. But again, I am really looking forward to option 3-4 beeing added as i want to make my own game with the engine (space game).

If I remove all quests, Bam the game doesnt load anymore, If i remove all technologies, the game doesnt load anymore, even if ive removed all hooks on the respective classes. Ive got a lot of work on the table to understand this new masterpiece of Atomic Torch.

ai_enabled

Alas, removing stuff from Core.cpk is hard as everything is heavily intertwined. E.g. quests are referencing a lot of creatures/items/structures, item recipes are referencing items, technology nodes are referencing recipes and perks, etc. Plus many classes are referencing others. For example, QuestsSystem referencing base ProtoQuest class so you cannot simply delete Quests folder and expect it workΓÇöthe required class would be missing (you can use Find Usages/Dependencies feature in Visual Studio to better understand where exactly each class is used).
I wish it was easier but we have to make the game, not only an engine...we already have done our best to make most code open source for this game so people can read and figure out how it works, and mod it by expanding/replacing content and features. It would be a bit overwhelming, though. :-)

Regards!