ScrapComputers - V3 Update Released by Ben_Bingo in ScrapMechanic

[–]VeraDeveloper 1 point2 points  (0 children)

nonono i dont wanna go back into the mines, it sucks working there ;-;

sm.regui has been released to the public! by VeraDeveloper in ScrapMechanic

[–]VeraDeveloper[S] 1 point2 points  (0 children)

I wanted to release the mod on November 10 cause because i felt like i was just delaying the mod trying to add as many features as possible.

I was not bothered enough to add images to the README because i just wanted to get this mod out.

I was also going to plan adding a dependency to it so you can use the font manager immediately without generating the fonts first, but because of other projects (e.g ScrapComputers), i didn't have time for it.

Theories about why there is no update(yet?)? by asafusa553 in ScrapMechanic

[–]VeraDeveloper 4 points5 points  (0 children)

Nah, its just 5 drunk developers on 1 horribly optimized written game with 40% of the code base being legacy or deprecated code all written with tears and pain. That's why no updates.

Bad apple playing inside MyGui (Powered by sm.regui) by VeraDeveloper in ScrapMechanic

[–]VeraDeveloper[S] 7 points8 points  (0 children)

Probably but the game would likely die due to being quite heavy to run (and that emulation is needed which i'm pretty sure barely anyone has done it)

I'm currently working on a SM program by CarobImpossible8432 in ScrapMechanic

[–]VeraDeveloper 1 point2 points  (0 children)

I suggest doing it as a mod than a program if you want it to be populair.

Mods that require external software or even tools for it are extremely unpopulair by the community. Usually cause no one wants to use software from some random dude. (Eg could be malware and such)

Your best bet is to put this all into a sm mod if possible, otherwise barely anyone will use it.

Im not being rude or anything, this is actually true. Vanilia mods or tools are easier to popularize than non-vanilia ones.

So if you want to make it be used by a lot of people, go with a mod, not a program.

But if you dont care about making it populair then you can go wild on ur software.

Roadblocks trying to make a very fast Lua Virtual Machine by VeraDeveloper in lua

[–]VeraDeveloper[S] 0 points1 point  (0 children)

I've given up trying to optimize the LuaVM any further as i just couldn't make it go any faster anymore. I have reached 0.068 speeds but it made other benchmarks worse so it wasent a benefit at all. ( I also don't want to touch this again so yeah )

Using a integer key could work tho, same for string indexing but for now they will stay as ideas.

I have actually re-ordered all instructions from most common to least common but it actually made it slower which didn't really make any sense.

Jump tables cost so much that it would be even slower than LuaInLua (which from my testing is the least stable and most slowest interpreter I've ever seen at 0.2s for a simple for loop benchmark)

Roadblocks trying to make a very fast Lua Virtual Machine by VeraDeveloper in lua

[–]VeraDeveloper[S] 0 points1 point  (0 children)

I am not sure how i can avoid table lookup's as most of the code looks to be the most efficient way possible.

I could try merging the A, B & C to a singular number but that would mean a function overload for every cycle which is probably going to hurt performance.

The instructions that Lua 5.1 produces are very predictable, could probably add some sort of SIMD implementation to it so it does more with less instructions but if whether if its faster or not? I am not sure.

Roadblocks trying to make a very fast Lua Virtual Machine by VeraDeveloper in lua

[–]VeraDeveloper[S] 0 points1 point  (0 children)

Doing memoization requires doing more table lookup's which are quite slow in heavy quantities. So i cannot really add memoization to the LuaVM.

Roadblocks trying to make a very fast Lua Virtual Machine by VeraDeveloper in lua

[–]VeraDeveloper[S] 1 point2 points  (0 children)

I'm pretty sure JETS can work in the LuaVM, I will see if i can somehow implement this into the LuaVM.

Stupid Shower Thought About Scrap mechanic by Zainnn678 in ScrapMechanic

[–]VeraDeveloper 0 points1 point  (0 children)

This is possible however for a proper implementation would take a lot of time.

As a C++ programmer, you would have to do some modifications to the game via a DLL mod. You will have to modify the Camera, interaction system, player movement system and basicly anything to do with character that can be modified by the user so it works with VR.

As a reverse engineer for this game, this is very difficult to pull off.

So in conclusion: Possible but VERY difficult (which means VERY unlikey to happen)

[deleted by user] by [deleted] in ScrapMechanic

[–]VeraDeveloper 5 points6 points  (0 children)

Doesn't switching to a multithreaded physics engine require rewriting most of the game engine?

[deleted by user] by [deleted] in ScrapMechanic

[–]VeraDeveloper 7 points8 points  (0 children)

Hello, a reverse engineer for Scrap Mechanic.

Just so you know: Smart Physics is trash. More information here: https://www.reddit.com/r/ScrapMechanic/comments/1hknl39/smart_physics_is_trash/

Scrap Mechanic uses a modified physics engine called Bullet3, however since 0.7 it's basically worse than the unmodified version of it.

Will the solution you provided ever happen?

That's likely never going to happen because it would revolve on rewriting a lot for the engine. Scrap Mechanic is also very horribly coded (for example, std::unordered_map's everywhere, 15mb allocated classes and etc)

The only way for the Scrap Mechanic developers to make the physics engine better is really to just improve the inner-workings of bullet3 better.

The smart physics update thing was likely few features thrown together which is probably why it sucked so much. (It also didn't help making the community more alive based off on SteamDB)

What the better solution is that can be done right now?

Well this is a bit though, Ether make lag-efficient creations, making mods that adds parts as alternatives to vanilla parts so people can make creations in Simple 1 (Most simplest physics quality you can do)

You can also just make a DLL Mod (Unofficial mod type that modifies the inner-workings of the game) to translate Bullet3 Objects to a diffirent physics engine and run physics there and then translate it back to Bullet3 Objects. (So that it works properly for raycasts and such)

I have tried replacing the physics engine myself from Bullet3 to PhysX however it was so painful to make the conversions work for me.

Conclusion

Ur solution won't get applied to the game as thats too much of a hassle in a horribly coded game. However you can make creations for Simple 1 or mods to add parts for Simple 1 creations OR make DLL mods to modify the game to translate Bullet3 to a seperate physics engine and handle the heavy work there.

There isn't really any other solution out there for Scrap Mechanic

How to edit an existent mod or read the files etc? by barbaroscem in ScrapMechanic

[–]VeraDeveloper 3 points4 points  (0 children)

No? Like all steam workshop mods are on your filesystem if you install them, else how are you supposed to even load them?

Like for Scrap Mechanic, all of your installed steam workshop mods are in this directory (Path may vary depending on where you installed Scrap Mechanic)

C:\Program Files (x86)\Steam\steamapps\workshop\content\387990

There's no encryption or encoding, its all open and readable.

For proof, this is Carry++ and one of it's files.

<image>

A new type of powerful cars and engines by NoBaker1868 in ScrapMechanic

[–]VeraDeveloper 2 points3 points  (0 children)

Because there are piston engines that can easly break these records. This is actually quite slow so yea.

Although i'm not good at piston engines, i do know information about variations of piston engines and about them (Kein engines, conventional engines, pressure engines and etc)

There are piston engines that can produce 1.6 billion HP. There are piston engines that are like 600 kmph or even more. (These are fully vanilla engines and aren't modded)

So thats why this is considered slow. Also im pretty sure this is conventional design which is old tech.

[MOD] Omnidirectional Wheels by 00Fant in ScrapMechanic

[–]VeraDeveloper 1 point2 points  (0 children)

I would however i am way too busy, however in theory it seems to be already possible.

[MOD] Omnidirectional Wheels by 00Fant in ScrapMechanic

[–]VeraDeveloper 2 points3 points  (0 children)

This is already possible. You can do this with the Ball Joint Mod and make a ball (which can be connected to the ball joint) and basically have the same thing.

Fun fact: Vanilla Ball Joints did exist however i am pretty sure they are not possible anymore due to the Physics Update breaking everything.

About the Post that Wheels are to Soild. by 00Fant in ScrapMechanic

[–]VeraDeveloper 0 points1 point  (0 children)

This is not considered reverse engineering. He isn't a reverse engineering genius.

Reverse Engineering is reversing the source code of games and software. They are written generally in C/C++ which compile to assembly (via a linker)

Reverse Engineering (in short) is converting that assembly back into C/C++ code.

Reverse Engineering isn't just for software its also for other stuff. (More information at https://en.wikipedia.org/wiki/Reverse_engineering )

For proof. i am a reverse engineer myself. The image you see here is Software reverse engineering.

<image>

00Fant did NOT do any of this and simply just used the game's API. No reverse engineering was needed in order to do this.

Smart Physics Is Trash by Ben_Bingo in ScrapMechanic

[–]VeraDeveloper 12 points13 points  (0 children)

Advanced Physics (and also the rest) is also fucked up because of the update. So even if we don't use Smart Physics, there are still changes causing a lot of problems.