Schiffbruch
Schiffbruch copied to clipboard
Load texture positions from JSON instead of having it hard coded
I'm interested what would be required to port this game to Linux (e.g. via SDL).
Are the windows specific parts isolated properly or is it just one mess of spaghetti code?
Also there are some files that look like they are used for C++ code generation. That's probably an issue as well.
In its current state it's still a huge mess of spaghetti code. DirectDraw and DirectInput are sprinkled everywhere. And many types used are Windows related.
Once I'm done refactoring the mess, it should be fully based on SFML and as such work cross-platform .
Are you currently working on that?
And do you have simple work items, that I could help with?
Not exactly. I'd like to pick up again.
Everything is interleaved so there's really no way to cut things down into smaller piece, plus to make it work, you pretty much after to use Visual Studio and Windows.
I have a Windows 10 VM with VS 2017 Community and (since I didn't manage to compile Schiffbruch with that) also VS 2015 Community. I didn't try to compile it with VS 2015 yet.
VS 2017 works fine (just compiled it), you just have to update the project solution and update the SFML libs.
I've once started to extract the whole initialization of all the different images, so they wouldn't be hard coded but loaded from a JSON file at start up. But since it's hundreds of different variables, I gave up at oen point.
If you want to, you could try and extract all the information, here's what I got so far. The init.txt contains all the other variables that I haven't yet added to the JSON structure: variables.zip
Do I understand you correctly that you want the Bmp
, Wav
etc. arrays in JSON form?
(your JSON example is not valid JSON btw.)
The easiest way to do that would probably be to execute the code and write C++ code that prints this information as JSON from memory.
Yes, that's the idea. Currently the initialization code alone is multiple hundred lines of code, making things quite messy, being able to cut those hard coded out into its own config JSON file, already makes the whole code base lighter.
Running the code to dump it, might be a good idea. Is this something you'd like to look into?
Yes, I can do that.
What JSON library do you intend to use in the end? If you have decided already I can use that and maybe even write the code to load the JSON back in.
Otherwise I would just export it using cJSON since I'm the maintainer of that library so I'm familiar with it.
I quite like https://github.com/nlohmann/json and I'd rather stick to a C++ library than C.
I meant to use cJSON just for exporting, if there was no JSON library decided upon for later importing the JSON.
How do you handle dependencies? For now I would just copy paste the source code or install the package on my Linux system or something like that.
nlohmann's JSON lib is a header-only lib, so you can just add the header to the source and include it.
For you export program you can easily just use cJSON you're familiar with it.
There's just a slight problem with JSON: Some values are calculated, even dependent on the screen resolution. I don't know how this can be represented using JSON (other than parsing strings and evaluating the result).
Well dependencies between different entities isn't really an issue. That was mostly done to "simplify" the calculation, but we could just save the complete values to JSON.
Which values depend on the screen resolution? If you mean the Guy's position and the camera, then that's no a problem. Those don't need to be saved to the JSON file, but can be set at the start of the game.
Looks like mostly text output and the credits.
I'll just ignore that then.
I will probably finish it some time this week.
Good to hear! 😊
This takes longer than anticipated, especially because some unexpected tasks with higher priority came up.
My current plan:
- [x] Make pairs of
to_json
,from_json
for every struct - [ ] Use these to generate JSON
- [ ] Hook up loading from JSON