Java-Gaming.org    
Featured games (91)
games approved by the League of Dukes
Games in Showcase (577)
games submitted by our members
Games in WIP (498)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Level, Asset, Save File storage  (Read 1034 times)
0 Members and 1 Guest are viewing this topic.
Offline novasharp

Junior Member


Medals: 1
Projects: 1


Gamemaker


« Posted 2013-03-02 23:34:08 »

Can anyone give me pointers on how to store levels and assets without hard-coding them? Also how to store save user saves.

novasharp
Offline Cero
« Reply #1 - Posted 2013-03-03 00:08:54 »

What kind of assets ?

you have sprites, soundfiles, music, tilesheets, fonts, whatever... these are all external files of course.

map files aswell. Usually map files only contain "configuration information" if you will, like a XML file. Kinda like: map size, which tileset and then a table of which tile is where... maybe layers and all sorts of stuff
you may write you own map system and editor or use one of the free ones - then you need to have an interpreter for these files... "Tiled" is a free one which many libs seem to support.
I always write my own, much more flexible

Save user saves. Well Serialize. Use Java Serialization, called the "Serializable" Interface and then you use objectoutput and input stream to write and read.
I like to use Kryo because it has this option to ignore missing fields and stuff, which helps savegame compatibility. But it has its own complications aswell.
You could write your own config and save it, using xml, json or even your own text file format

Offline tyeeeee1
« Reply #2 - Posted 2013-03-03 00:29:22 »

You might want to be more specific, there are so many ways to store and load levels, assets, saves, etc...
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline novasharp

Junior Member


Medals: 1
Projects: 1


Gamemaker


« Reply #3 - Posted 2013-03-04 23:16:52 »

So, for assests, i mean like tools, ships, weapons with their sprites and all the metadata associated with the assets. So for a tool, that data would include its functions, its cost, its power, etc... I would like to have the sprites and metadata stored in one file. For the level files, I will have a bunch of pre-defined levels that will have cutscenes and enemies, obstacles. Drops and loot will be both randomly generated, but in pre-defined spots and also specified explicitly. Save files should allow users to reset everything back to the exact way it was when they saved.

novasharp
Offline tyeeeee1
« Reply #4 - Posted 2013-03-04 23:48:35 »

For most of those things, except for the save file, you could just use a database such as Derby or something like that.
Offline Z-Man
« Reply #5 - Posted 2013-03-05 22:29:08 »

As tyeeeee1 said there are a lot of different ways to store assets for a game so it really just comes down to your personal preference. For me I usually just store maps/character data/etc in a plain text file and read it in at some point in the game. I personally just don't feel like messing with a database, or an XML parser, or a JSON parser, or what have you. Of course that means I end up writing my own little parser but that doesn't take much effort at all really and it can just be reused from project to project.
Offline novasharp

Junior Member


Medals: 1
Projects: 1


Gamemaker


« Reply #6 - Posted 2013-03-05 22:46:13 »

Ok. Sounds like this is more personal preference than I thought. Well, thanks for the advice.

novasharp
Offline Danny02
« Reply #7 - Posted 2013-03-06 09:49:44 »

i would recommend to use the Jackson JSON parser, it will be a lot easier and less complicated then some handcrafted thing.

just create little data classes like:
1  
2  
3  
4  
5  
class LevelData
{
String titel;
int enemyCount, maxTime;
}


which can be loaded & saved like this:
1  
2  
3  
4  
5  
6  
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
//to read
LevelData level1 = mapper.readValue(new File("data/levels/level1.json"), LevelData.class);
//to write

mapper.writeValue(new File("changed-level1.json"), level1);


here is a more complete tutorial: http://wiki.fasterxml.com/JacksonInFiveMinutes
Offline novasharp

Junior Member


Medals: 1
Projects: 1


Gamemaker


« Reply #8 - Posted 2013-03-06 22:21:39 »

Okay. Thank you for the pointer. I will look into that.

novasharp
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

xsi3rr4x (19 views)
2014-04-15 18:08:23

BurntPizza (15 views)
2014-04-15 03:46:01

UprightPath (28 views)
2014-04-14 17:39:50

UprightPath (13 views)
2014-04-14 17:35:47

Porlus (29 views)
2014-04-14 15:48:38

tom_mai78101 (54 views)
2014-04-10 04:04:31

BurntPizza (111 views)
2014-04-08 23:06:04

tom_mai78101 (212 views)
2014-04-05 13:34:39

trollwarrior1 (181 views)
2014-04-04 12:06:45

CJLetsGame (187 views)
2014-04-01 02:16:10
List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:05:20
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!