Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
FSMaxB opened this issue Jun 16, 2017 · 20 comments
Open

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

FSMaxB opened this issue Jun 16, 2017 · 20 comments

Comments

@FSMaxB
Copy link
Collaborator

FSMaxB commented Jun 16, 2017

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
Copy link
Collaborator Author

FSMaxB commented Jun 16, 2017

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

@eXpl0it3r
Copy link
Owner

eXpl0it3r commented Jun 16, 2017

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
Copy link
Collaborator Author

FSMaxB commented Jun 16, 2017

Are you currently working on that?

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

@eXpl0it3r
Copy link
Owner

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
Copy link
Collaborator Author

FSMaxB commented Jun 17, 2017

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
Copy link
Owner

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
Copy link
Collaborator Author

FSMaxB commented Jun 17, 2017

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
Copy link
Collaborator Author

FSMaxB commented Jun 17, 2017

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
Copy link
Owner

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
Copy link
Collaborator Author

FSMaxB commented Jun 17, 2017

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
Copy link
Owner

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

@FSMaxB
Copy link
Collaborator Author

FSMaxB commented Jun 17, 2017

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
Copy link
Owner

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
Copy link
Collaborator Author

FSMaxB commented Jun 17, 2017

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
Copy link
Owner

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
Copy link
Collaborator Author

FSMaxB commented Jun 17, 2017

Looks like mostly text output and the credits.

@FSMaxB
Copy link
Collaborator Author

FSMaxB commented Jun 17, 2017

I'll just ignore that then.

@FSMaxB
Copy link
Collaborator Author

FSMaxB commented Jun 18, 2017

I will probably finish it some time this week.

@eXpl0it3r
Copy link
Owner

Good to hear! 😊

@eXpl0it3r eXpl0it3r added this to Backlog in Refactoring Jun 27, 2017
@eXpl0it3r eXpl0it3r changed the title Port to other platforms (like Linux) Load texture positions from JSON instead of having it hard coded Jun 27, 2017
@eXpl0it3r eXpl0it3r moved this from Backlog to Work in Progress in Refactoring Jun 27, 2017
@FSMaxB
Copy link
Collaborator Author

FSMaxB commented Jul 4, 2017

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

My current plan:

  • Make pairs of to_json, from_json for every struct
  • Use these to generate JSON
  • Hook up loading from JSON

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Refactoring
Work in Progress
Development

No branches or pull requests

2 participants