Tag Info

Hot answers tagged

54

I agree with out 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 ...


41

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


36

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.


22

I think you mean Squidi's 300 Game Mechanics.. I wonder how many of those have gotten actual use. I know the light/dark idea (his first 3 posts) got implemented as fairly popular flash games, but I don't know if he did that or someone else did.


15

A good resource manager is key to how well - and how flexible - your game 'engine' is going to be. Not only does it solve a lot of problems with low level resource management, but it also helps to ensure that resources are loaded only once, and then reused if they are already loaded. If the resource system is abstracted well, the underlying details can ...


15

I really like PhysFS for this. It allows you to access either folder 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 hierachy. This way compressed archives are not in the way and you can rapidly iterate. Initial deployment: zip up you resources for easy ...


14

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


13

Forget about books atleast untill 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 docummentation, OpenGL is easy to use once you get used to it. ...


13

In addition to other answers, two important concerns you should consider: Spoiling surprises 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. Losing challenge Same scenario, but I find the saved game format has a value for "gold". I change it from 250 to 999999999, ...


11

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


10

I don't see how being an indie developer changes the problem set other than probably having a smaller budget. Your list of options probably fall something like this: Have a sound guy on staff to do all custom stuff Contract out a sound guy from one of the many sound studios Get lucky and "know a guy" (online or in meatspace) who does music who will do it ...


10

I have been in the exact same situation as you and have finally found what I needed to get going. First off head here: http://www.arcsynthesis.org/gltut/. 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 ...


10

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.


9

I recently wrote a resource manager which works pretty well for my case. Main features: Resources are requested by string ID, for example, ResourceManager::instance().getTexture("textures/player.png"). The texture ID is currently mapped straight to a file on disk, which is convenient during development, but this will later be replaced by lookup in some ...


8

The primary resources (barring conferences) for research around game development that I've found is the Game Programming Gems books, GPU Gems and the AI Game Programming Wisdom books (Both can be found here). Both series' feature articles from game developers as well as researchers and at the end of each article they offer a comprehensive reference list to ...


8

I have a folder for my sources, i call it src and a folder for assets called assets which looks like: - Assets - Images - Sounds - Scripts - Animations - Config (for property files etc.) - ... (maybe others regarding the game i'm working on) EDIT: And regarding naming conventions for those resources Use a period to separate the ...


7

A note, setting off multiple reads will be slower because the disk I/O keeps seeking around to pull bits of data from each open request. To get around this I created an intermediate streaming traffic cop that prioritized multiple async read requests and serialized them to the OS. In your own game you can create priorities based on data type or how soon the ...


7

Well for starters XNA's content manager doesn't load the same asset twice, it will just return a reference if something was already loaded. As for your resource approach, I don't know if it's really the way to go since you basically hard code your content assets into your game. A possible solution to your problem would be the factory pattern. Say you would ...


7

It seems like there are two challenges you are facing here: distribution, and asset packaging. Distribution 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 ...


7

I think it depends on several factors: How big your game is If your game is small and can fit memory, it's much easier to load everything at once and keep it in memory. If your game is strctured as levels, load everything you need and keep it in memory (e.g. UI, main character) and load each level resources when you need it. The nature of the game Open ...


6

The isometric projection is not so much relevant for the underlying tools you choose, it's just the way (angle, no perspective distortion) you look at things, but that doesn't change the underlying principles of how things behave. That means you don't need to particularly search for isometric tools. The physics for instance is the same, no matter how you ...


6

Unless you go beyond what can reasonably be stored in memory you don't need an advanced resource manager. That is true for desktop games as well, most "small" games get away with just loading everything into memory at launch, and then it's there when needed. In HTML and JavaScript you don't have direct control of resources in the same way, the browser has a ...


6

Basically, it's not easy to get the vertex data back from the video card once it's there. Keeping the vertex data available to the CPU allows for a number of things, here are a few: As melak47 suggests, it allows the developer to free up video memory by freeing a VBO, while being able to quickly replace the data without needing to read from disk again. It ...


5

Most of the time manifest files are associated with some sort of archive file format. For instance, a JAR file in java is simply a zip file with a manifest file that lists the assets within the zip file, and where to find them. In that case the "path/to/image.png" is not a real filesystem path but is instead information on how to find the object inside a ...


5

Two sites that have been very helpful for me are: http://www.arcsynthesis.org/gltut/ and http://ogldev.atspace.co.uk/ Also, the OpenGL wiki is an extremely good and up-to-date resource. Once you get through these, I highly recommend biting the bullet and reading the OpenGL specification. Then you'll be a pro.


5

You can just use a binary format and write the data structure to the file itself. To verify you are opening a proper and uncorrupted file, add a "magic" string to the data structure and check the string each time it's loaded (this is just a simple way to do it). An example of how to do this can be found here. Encryption can also be added with little hassle.


5

Endianness matters when it comes to game consoles. The Wii, the PS3, and the XBox 360 all run big-endian, while all major desktop computers (as of the date I'm writing this answer) run little-endian. If there's a chance you'll want to compile your code for one of those game consoles someday, or if someone releases another popular big-endian desktop machine ...


5

Let's start by assuming a perfect world. There are two steps to loading a resource: first you get it off your storage media and into memory in the correct format, and second you transfer it across the memory bus to video memory. Neither of those two steps actually need to use time on your main thread—it only needs to get involved to issue an I/O command. ...


5

Well, I'm surprised about the stuff you can learn when researching stuff for answering a question. Short answer: you can't. This stuff you probably already know, but I'll cover it in case other people find it useful. At first I thought you can't share handles among Direct3D devices, let alone versions, but it turns out that you can actually do that! In ...


4

Use the Texture2D.FromFile method; for the first parameter, give it your GraphicsDevice which is a property of the Game class (so from within a method of the Game class, just use this.GraphicsDevice). Unfortunately only Texture2D objects can be loaded this way; a Video object is not so easy to load.



Only top voted, non community-wiki answers of a minimum length are eligible