eXpl0it3r / Schiffbruch

Schiffbruch is a mix of building, strategy and adventure and gets played with a two-dimensional view.
Other
74 stars 11 forks source link

Load texture positions from JSON instead of having it hard coded #1

Open FSMaxB opened 7 years ago

FSMaxB commented 7 years ago

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?

FSMaxB commented 7 years ago

Also there are some files that look like they are used for C++ code generation. That's probably an issue as well.

eXpl0it3r commented 7 years ago

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 .

FSMaxB commented 7 years ago

Are you currently working on that?

And do you have simple work items, that I could help with?

eXpl0it3r commented 7 years ago

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.

FSMaxB commented 7 years ago

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.

eXpl0it3r commented 7 years ago

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

FSMaxB commented 7 years ago

Do I understand you correctly that you want the Bmp, Wav etc. arrays in JSON form?

(your JSON example is not valid JSON btw.)

FSMaxB commented 7 years ago

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.

eXpl0it3r commented 7 years ago

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?

FSMaxB commented 7 years ago

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.

eXpl0it3r commented 7 years ago

I quite like https://github.com/nlohmann/json and I'd rather stick to a C++ library than C.

FSMaxB commented 7 years ago

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.

eXpl0it3r commented 7 years ago

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.

FSMaxB commented 7 years ago

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).

eXpl0it3r commented 7 years ago

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.

FSMaxB commented 7 years ago

Looks like mostly text output and the credits.

FSMaxB commented 7 years ago

I'll just ignore that then.

FSMaxB commented 7 years ago

I will probably finish it some time this week.

eXpl0it3r commented 7 years ago

Good to hear! 😊

FSMaxB commented 7 years ago

This takes longer than anticipated, especially because some unexpected tasks with higher priority came up.

My current plan: