VladimirMakeev / D2ModdingToolset

Mss32 proxy DLL for Disciples 2
GNU General Public License v3.0
32 stars 13 forks source link

Guideline for developers #213

Closed Haikyo-sama closed 1 year ago

Haikyo-sama commented 1 year ago

Hello!

The idea and the project itself are astounding. It opens up new horizons in modding. However, as it seems to me, lua cannot unleash the full potential of that.

I am a software engineer, but my stack is spring + angular, so, unfortunately it is difficult to delve into the cpp project. Nevertheless, I would like to. I know there are usually a lot of prerequisits for deployment and compilation, such as environment, os, packages and dependent software. I think it would be great to have some basic starting tutorial including description of the aforementioned issues.

I have already tried to compile mss32, but could not manage it well.

VladimirMakeev commented 1 year ago

So you are saying that Lua is not good enough for the project and tech stack you don't know anything about and could not even build?

As stated in readme, you can build the project using Miscosoft Visual Studio solution file.

Haikyo-sama commented 1 year ago

I only said working with source code have much more facilities than current lua scripting. Why should you view it in point of me? Yes, I have no experience in cpp, however, does it invalidate the fact?

could not even build

Do you really supposed building a project is the most easiest thing in programming? I could figure it out by myself, but it thought it could be better to ask here because of 2 reasons:

  1. It is much more rational to share knowledge than rediscover it
  2. Other developers could just read the tutorial instead of asking again or trying by themselves

Nevertheless, I understand your position, thank you!

VladimirMakeev commented 1 year ago

Sorry, I did not have an intent to be rude. This project while related to the 20 yers old computer game is not simple as it may seem. It uses some of not widely used technologies such as: hooks, proxy-dll and low-level programming. Also, there is reverse engineering involved and unfortunately there is no simple way or tutorial to follow to grasp most of what is going on and why. You will probably need to know C or C++ with its pointers and structure layout in memory, then calling conventions, OS ABI and other low-level stuff. For the game itself you "just" need to reverse-engineer its logic and data structures to understand what the game does, when and how. Project setup consists of cloning this git repo with all its submodules, installing aforementioned Visual Studio and clicking 'Build' inside of it. After the build you will have proxy-dll that you place in a game folder along with renamed original dll (thats how proxy-dll works). There is also game community that involved in the process of decision making: modders that use this dll as well as content (scenario map) makers are mostly non-programmers. There is need for wide customization and simplicity. Both can be achieved using Lua scripts. Most of the scripts are less than 20 lines of straightforward code. Nothing more than simple 'if, else, for-loop', but of course experienced people can have their OOP, lambdas and maybe even better toys. Lua is fast enough (and this project can still invprove performance using compilation to bytecode and caching) and easy to integrate into the old game even when you don't have its source code. It is also a language that I know used for scripting in other games and the last reason: I somewhat know and understand Lua (compared to python or js).