Saving Games

Blitz3D Forums/Blitz3D Programming/Saving Games

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

WriteLine and ReadLine would probably be better suited to be something like WriteInt/ReadInt or WriteFloat/ReadFloat#.
That would also create a smaller file size.

A problem with Malices code is that it can only load in trees. You would benefit from doing something like this:

Filename=WriteFile("Saved_Folder\Savedgame.blah") 
For Saver.Rock = Each Rock
  WriteInt(Filename, 1)
  WriteInt(Filename, Saver\Type) 
  WriteInt(Filename, Saver\Size) 
  WriteString(Filename, Saver\Colour$) 
  WriteFloat(Filename, Saver\Loc_X) 
  WriteFloat(Filename, Saver\Loc_Y) 
  WriteFloat(Filename, Saver\Loc_Z) 
Next
For Saver.Tree = Each Tree 
  WriteInt(Filename, 2)
  WriteInt(Filename, Saver\Size) 
  WriteInt(Filename, Saver\Branches) 
  WriteString(Filename, Saver\Colour$) 
  WriteInt(Filename, Saver\Leaf) 
  WriteFloat(Filename, Saver\Loc_X) 
  WriteFloat(Filename, Saver\Loc_Y) 
  WriteFloat(Filename, Saver\Loc_Z) 
Next
;etc.
CloseFile(Filename)
Where the first WriteInt is saving the type of object being saved such as 1=rock, 2=tree, 3=house, 4=lightpost, etc. This way, you know how to load it later.

And then to load it you would:
Filename=ReadFile("Saved_Folder\Savedgame.blah")

Repeat
  objecttype = ReadInt(Filename)

  Select objecttype
    Case 1
      ;load in rock
    Case 2
      Loader.Tree = New Tree
      Loader\Size=ReadInt(Filename)
      Loader\Branches=ReadInt(Filename)
      Loader\Colour$=ReadString$(Filename)
      Loader\Leaf=ReadInt(Filename)
      Loader\Loc_X=ReadFloat#(Filename)
      Loader\Loc_Y=ReadFloat#(Filename)
      Loader\Loc_Z=ReadFloat#(Filename)
    Case 3
      ;load in house
    Case 4
      ;load in lightpost
    Case Default
      RunTimeError "Unknown object encountered"
  End Select
Until Eof (Filename)


I can't help outdoing someone elses code... ;)