I agree about the above books with a few notes:
The OpenGL programming 8th guide is now out and has be redone for modern OpenGL 4.3.
The SuperBible 5th ed, does provide you will a crutch library to start off but as you go through the book you reimplement the functionality of that library so by the end of it you should be fully versed. I also highly ...
Game programmers have relied on one of two main methods of data storage:
store each data file as a separate file
store each data file in a custom archive format
The drawback to the first solution is the wasted disk space problem, as well as the problem of slower installations.
The second solution provides it's own pitfalls, first is that you must write ...
No it isn't, changing the game data is called modding, which is a common practice and often seen as positive effect. It's actually good to keep the game data as transparent as possible, and editing it as hassle-free as possible. Even more so if you are choosing more "advanced" players as your target audience.
The reason why you won't find many AAA-games ...
Log an error and gracefully exit.
Ideally, display a human readable error on screen as well. There should be a core pipeline of hard coded functionality that operates without these data files. It's the same pipeline that loads the data files in the first place. It should be capable of detecting when these core data files are corrupt or otherwise faulty and ...
Another solution often used to "hide" the game files is folder structure. Keep only your executables and maybe a readme in the main directory and move the game files into a sub folder "data". I don't think that it is very uncommon to do so. Many games I know store their content in such a way.
Major games use something called a build pipeline. This is like another set of tools that handles building the game content for all the different distributions. Multi-platform games like No Man's sky and Watch_Dogs most definitely use different assets for the different platforms. So the way I see it there two possible answers to your question.
The devs ...
Sounds like the scaling algorithm you're using isn't interpolating pixels.
Pictures are best explained with pictures:
It's the Major, first in full, then scaled down with Lanczos (left) and nearest-pixel (a.k.a. no interpolation) (right) to two sizes.
The same comparison, in 3x magnified:
Make sure the scaling you're using is resampling sensibly. For ...
The Don't Dread Threads series by Intel, is quite good. It has 3 parts, the basics are covered in the first 1.5 of them.
Don't Dread Threads 1
Don't Dread Threads 2
Don't Dread Threads 3
Summary of what was covered in first 1.5:
Avoid Functional Decomposition
First of all, they discourage using Functional Decomposition. Functional decomposition is just ...
I really like PhysFS for this. It allows you to access either folders or zip archives with the same code. It works well for all stages of a Games lifetime.
During development: access the resources directly from a folder hierarchy. This way compressed archives are not in the way and you can rapidly iterate.
Initial deployment: zip up your resources for ...
Yes and no. "Public domain" does mean that, by definition, you can do whatever you like with that creative property.
However there's an important caveat here. What's public domain is the underlying story, not every specific creative work based on that story. So, like, you could have a book titled Alice in Wonderland, but its cover can't be Disney's Alice in ...
You could follow the game crediting guide by the IGDA like many game studios do.
Its main bulk are several rules regarding who to credit, in what order and in what way. But page 10 also has rules regarding where to place the credits. To sumarize:
The credits should appear in the game
The credits should be easily accessible without having to beat the game.
According to Open Game Art's FAQ:
You must follow only one of the licenses. However, when you re-distribute/edit, you are encouraged to include/use all of the licenses, so the license spectrum (and thus sum of people/projects who can use the art) doesn't shrink.
The zip-format supports several different compression algorithms. You can use a different algorithm for each file in the archive. When you want to store already compressed files which do not benefit from additional compression (like PNG) in a zip-archive, you can encode these files with the "stored" algorithm which doesn't compress at all. The "Add to ...
Forget about books at least until the 8th edition of the programming guide comes out.
Besides the mentioned tutorial, I found this site to be helpful, since it goes past the basics fairly quickly. They're both a great introduction to modern OpenGL. Once you get past that, you'll only need the documentation, OpenGL is easy to use once you get used to it. The ...
In addition to other answers, two important concerns you should consider:
Say I'm halfway through the game and discover the "video" folder. Curious, I click on one, and happen to see the final cutscene of the game.
Same scenario, but I find the saved game format has a value for "gold". I change it from 250 to 999999999, ...
Perhaps unprofessional is the wrong word. It really depends on the game whether or not leaving files exposed is a Bad Thing.
For a simple singleplayer game, players and modders will love you. You would be giving them the ability to easily change your game and do what they want. And keep in mind, there will always be modders for a game, no matter how small ...
It seems like there are two challenges you are facing here: distribution, and asset packaging.
Package up your entire application into directories as you see fit, then place the top-level directory into a .zip file. Distribute that .zip file. When your users extract the zip, they will have a folder with everything they need ready to run the ...
I'd suggest using a ZIP file. It's an ubiquitous format and you'll find ready-made libraries that allow you to load files from within a ZIP file. A quick Google search even revealed a zip loader for sfml.
I would say that's a very good practice. Source control should be used for source and assets. You can think of it like a backup, you want to be able to restore from source control everything needed to build your game.
I linked a question that's about storing assets in a repository. There are some repositories that work better than others for storing art. ...
Have you considered hardcoding something like a time limit into the demo version of the engine?
The thing is, no matter how much you protect your demo, the game will be pirated somehow once it comes out. Whether it's by using the demo or just by using the main game, it's going to happen if the game's popular enough.
People who don't want to pay for your ...
Byte56 mentioned one option. There is at least one other:
Assume default values and display a Warning.
Depending on the nature of your data, it might be perfectly acceptable to assume some default values and warn the user that "since file xxx failed to load, we are using a generic yyy object."
I have been in the exact same situation as you and have finally found what I needed to get going.
First off head here:
This site is fantastic, good working examples and deep explanation of what is going on. Even though the code is written in C++ I'm using this to teach me writing OpenGL demos in Lisp. It also is totally ...
There is an easy fix for it.. You could simply batch rename the extensions in a command prompt using something like
rename *.txt *.map
And then place them in a \map folder
You can access a command prompt from windows running cmd
This will not stop modders who know they want to mod the game and will leave a less sloppy impression on people who just want ...
Watch for different copyright terms in different countries. Just because a book's copyright has expired in your country does not mean it has expired in all countries in which you plan to distribute the game. Though the Berne Convention sets a minimum copyright term of 50 years after the death of the author, countries are free to set a longer copyright term. ...
Encrypt it. It's really that simple. Since you're trying to discourage casual editing (rather than a dedicated hacker), the encryption algorithm could be fairly simple. There's no need for PGP or something. You could use ROT13. Or develop a substitution cypher of your own.