User:Zzo38

From OHRRPGCE-Wiki
Jump to navigation Jump to search

I agree to release my contributions to this wiki as public domain when possible.

Super ZZ Zero[edit]

I am also working on a game engine called "Super ZZ Zero", which is inspired from ZZT, MegaZeux, Super ZZT, ZZ Zero, and also OHRRPGCE. Some of the ideas from OHRRPGCE may later be used in it, and we may also consider if I think some of the ideas (of OHRRPGCE, MegaZeux, etc) were mistakes and will therefore try to design it in a better way. (Some of these things might also be ideas to improve OHRRPGCE, but for much of it, OHRRPGCE cannot really be changed to improve it in this way.)

  • The save game file uses the same lumped Hamster archive format that the world file uses, although the SAVE.DER lump contains data which is specific to a save game file. This means that board can persist (each board can be defined as persist or non-persist) and anything can be changed and can be saved and restored; anything which is not changed does not need to be saved. (See also Plan for save states)
  • I think it was not right to store the editor information and editing history in the general.reld lump. Super ZZ Zero does not currently store this information at all, but if it is stored in future, it will be stored in a different lump rather than GENERAL.DER (probably HISTORY.DER for history, and EDIT.DER for information specific to the editor; this would make it possible to easily delete this without breaking the world file, if desired). (Information of what version of Super ZZ Zero is required to use the world file is stored in GENERAL.DER, and multiple version numbers can be stored in case it later becomes necessary for compatibility with bugs that were not fixed in time before a game that relies on them is released.)
  • Maps and some other things are stored in a compressed format, which is more compact than OHRRPGCE and ZZT.
  • Lumps do not need to be extracted as separate files in order to use them; an index is made and stored in RAM when the world is loaded. (See also Plan for faster game loading and upgrading)
  • Multiple inventory lists are possible, and you can specify the maximum total weight of all items that an inventory list is allowed to have. Item slots in a inventory list can also have additional properties than only which item and the quantity, in case this is helpful in some games. Both item definitions and inventory lists can have heap limits defined.
  • The first lump is always named !SZ0 of length 7, allowing the file to be identified as a Super ZZ Zero world file (or a save game file, or published world file), and to check for save game compatibility.
  • There are zones like OHRRPGCE has, although not as many zones. However, there are ordered zones and unordered zones (where ordered zones have the cells in the zone in a specific order), as well as several special zones (such as those relating to tile attributes), and also zones that are the complement of the other zones, so that a cell is in the complement zone iff it is in the other zone.
  • A world file can have multiple fonts, and the possibility to switch between them.
  • You can have multiple active scripts at once (each of which is associated with a stat instance; they can be either placed in the board grid (like ZZT and MegaZeux) or independent from the board grid), similar to Plan for script multitasking, although Super ZZ Zero currently lacks many of the features described there (and requires all scripts to be what that article describes as "tie to npc" and "tie to map"; there is currently up to one single global script which can move between maps that are not defined to suppress global scripts). Some of the functions described in that article might be added in future, though. (Super ZZ Zero also has a separate VM code for synchronous programs, and these can call and be called by scripts. You can also use the synchronous VM codes to suspend all scripts or to otherwise control when they run.)
  • The ability to create new boards at run time (this might be useful for procedural generation).

External links[edit]