Mod of versions before 0.4.0


("Belgium isotope" "Achievement hunter" "King of badcalls" "File handler" "Github complainer") #1

To modify the game on versions that are prior to 0.4.0 (the engine change), do I really need the Lua game engine or can I just use notepad++ to modify the scripts and stuff?

Also, what was the game engine that was used before?


#2

If you download the 0.3.4 release you can modify the script similarly as with 0.4.0 modding.

The “Lua game engine” in the game is just a few Lua files that are loaded like normal when the game starts. No need for anything other than thrive.


("Belgium isotope" "Achievement hunter" "King of badcalls" "File handler" "Github complainer") #3

So the old game engine was made from scratch?


#4

Yes. This was mentioned quite a lot when we talked about changing engines.


("Belgium isotope" "Achievement hunter" "King of badcalls" "File handler" "Github complainer") #5

And are there any other languages that could be useful for the old versions (excluding graphical programming languages)? If yes, what languages should I learn too and what are their purpose?


#6

In 0.3.4 only C++ and Lua were used as the programming languages. Other than that there are some xml files for specifying the GUI layouts.


("Belgium isotope" "Achievement hunter" "King of badcalls" "File handler" "Github complainer") #7

And what were the differences between Lua’s and C++'s uses?


#8

It’s basically the same as the distribution of responsibilities between C++ and AngelScript in 0.4.0.
You can easily view all of the old code: https://github.com/Revolutionary-Games/Thrive/tree/v0.3.4


("Belgium isotope" "Achievement hunter" "King of badcalls" "File handler" "Github complainer") #9

So you mean C++ was for the game engine and Lua was for the game?

So the programming language is for the game engine and the scripting language is for the game…?


#10

Yes, but some of the “engine” parts were in Lua in order to reduce the amount of times the code needs to jump from C++ to Lua and back.


("Belgium isotope" "Achievement hunter" "King of badcalls" "File handler" "Github complainer") #11

Is that so for all game engines and games in general?


#12

I doubt that anything applies to engines in general.

With Lua and many other scripting languages they need a lot of translation from C++ types to the script language types resulting in the crossing between the languages to be expensive. With AngelScript this isn’t true as it is designed to have compatible types and objects with C++ to have as low overhead as possible on calling C++ functions from scripts.

Some games might go as far as only having the heavy lifting math and graphics part in a library that is written in a low level language, and everything else in something like Lua. That way for example in Thrive 0.3.4 it would have been possible, by binding the Ogre and other libraries into Lua, to have all of the engine parts written in Lua.

There are very few universal truths in programming because often someone does something just to prove that it is possible, even if it doesn’t make much sense.


("Belgium isotope" "Achievement hunter" "King of badcalls" "File handler" "Github complainer") #13

However, Source engine uses C++ and Lua (or other scripting languages like Squirrel and Python), and there might be some errors, but it’s not that much performance heavy.


#14

From what I’ve heard, the primary scripting of source engine isn’t in Lua, or at some point didn’t use to be. I’ve read from multiple places that “scripting” with source engine works by compiling C++ into a DLL and just loading that into the game process.


("Belgium isotope" "Achievement hunter" "King of badcalls" "File handler" "Github complainer") #15

I wasn’t saying that Lua is the main language (C++ is), for there at least 4 scripting languages for Source games.

EDIT : Nevermind what I said. I didn’t read correctly.