____ _____ _ ____ __ __ _____ | _ \| ____| / \ | _ \| \/ | ____| | |_) | _| / _ \ | | | | |\/| | _| | _ <| |___ / ___ \| |_| | | | | |___ |_| \_\_____/_/ \_\____/|_| |_|_____| README Project: Book.gmk Purpose: To make it easier for 'LateralGM+ENIGMA' based games to have readable, bookmarkable, and easily changable books via INI files. Author: TheOuterLinux (https://theouterlinux.gitlab.io) GML scripts licenses: MIT Included font license: SIL Open Font License Included sprites, backgrounds, and images licenses: CC BY-SA (give credit) Sound effects and narration licenses: CC0 (Public Domain) Forest background music license: See included "Data/Books/Audio/Forest/License.txt" file All included *.ini file licenses: CC0 (Public Domain) Requirements to open and run/compile project file: LaterGM+ENIGMA Both 32-bit and 64-bit binaries were built with SDL (OpenGL 1.1) set for graphics and OpenAL for audio on a GNU/Linux system with GCC/G++ version 10.2.1. Project last updated: 2024/03/26 ------------------------------------------------------------------------ This file is a GMK file for use with LateralGM+ENIGMA, a combination of which is very similar to using one of the Game Maker classic versions but both LateralGM (an interface) and ENIGMA (an engine) are free and open-source projects. The point of this project is to have an easy way for the player to interact with books, journals, tomes, letters, and etc. found through- out a game. These books are created using INI files. Merging this project with your own should be fairly simple; I also have the scripts available in the Scripts directory if opening the GMK (GM8) file is a problem. HOWEVER, as it is currently coded, do not expect these scripts to run on actual 'Game Maker 8' without a fight; they are meant for LaterGM+ENIGMA. If you have a way to make it "nice" for both, then please send me a copy of your script corrections so everyone can benefit; they still need to be MIT licensed. The included "fnt_Default" is "EB Garamond 12" and falls under the SIL open Font License (http://scripts.sil.org/OFL). You can find a copy of this font within the "Source/Fonts" directory. "Book_64Linux" and/or "Book_32Linux" binaries usage: A. Just run the binary and a default INI book (TheRaven.ini) will appear B. Or, open a terminal in the same location as the "Book_[64,32]Linux" binary and then run it with an argument like so: ./Book_64Linux "/path/to/Books/TheRaven_LighterOnRAM.ini" ...If the chosen INI book-file does not load or work properly, check the contents of the INI to make sure that file-paths are correct. The usage of "working_directory" within the GML scripts make file-paths realtive to the location of the binary and/or project file, which is why GMK is used and not GMX; the GMX "format" (GM: Studio) is actually a directory. "Book_32Linux" is for 32-bit GNU/Linux users. "Book_64Linux" is for 64-bit GNU/Linux users. The "TheRaven_LighterOnRAM.ini" by default only uses about 70MB of RAM where as "TheRaven.ini" is going to a few hundred more because of loading external resources, even though there are not a few hundred MB's worth to load; I am not sure why. * * * REMEMBER... file-paths specified within the INI books should be relative to the project file or binaries; specifying a full file-path somewhere else may not work because "working_directory" is placed at the front of the file-path related lines within the GML scripts. If you want to change the values of variables that are file-related, those paths need to be relative to the location of the project file or the precompiled binaries, depending on which of these you are playing around with. ------------------------------------------------------------------------ Keyboard Keys: Right Arrow, Spacebar, PageDown, or A Page forward Left Arrow, PageUp, Backspace, or D Page backward Home, W, or Up Arrow Title Page End, D, or Down Arrow Last page M Toggle mute for background audio N Toggle mute for narration audio B Bookmark current page spread Q or Esc Close book * * * By the way, toggling mute for background audio or narration does not stop or pause the audio; it only mutes it, switching between their set audio volumes and zero. These initial audio volumes can be changed from within the "Settings/Audio.ini" file. Also, the way things are coded, toggling the audio-related settings will also toggle for all books since those settings are shared using the "Settings/Audio.ini" file. You can only bookmark one page spread at a time but bookmarks are kept relative to each book. Keys can be changed from within the "Settings/Controls.ini" file; see the included "Settings/KeyboardCodes.txt" for help. If you want joystick or gamepad controls, use a program like 'QJoyPad' to tranlsate buttons to keyboard keys. ------------------------------------------------------------------------ Limitations The "font_add()" function does not currently work in LateralGM+ENIGMA and so fonts specified in the INI book file must be relative to the fonts supplied within the project. Images and audio files that are to be loaded externally must be PNG and WAV if using LateralGM+ENIGMA. Functions such as "sound_discard()" and "sound_enable()" are currently not available to LateralGM+ENIGMA users and so freeing-up memory if the "sound_add()" function is used may not be possible. Meaning, switching back-and-forth between the book and another room will increase RAM usage quite a bit. However, closing the program/game does return the RAM back to normal. If this will be a problem, for the time being, you may want to consider not having any background audio or narration for your books. If you try to get this project (as is) to work with Game Maker, it propbably will never happen do to array "out-of-range" something or other errors (and others) and because INI files have to be in the same directory as the binary or project file. Also, Game Maker is very weird about trying to use resources that are not included within the project; LateralGM+ENIGMA is MUCH more forgiving when it comes to this, except in the the case of extra RAM usage. If you want joystick/gamepad controls, you are going to have to use something like 'QJoyPad' to translate joystick/gamepad buttons to keyboard keys. LateralGM+ENIGMA has joystick and gamepad functions but their current state is a mess, especially if building using SDL for graphics. X11 uses "joystick" functions while SDL uses "gamepad" functions. And, you cannot compile for both X11 and SDL for graphics which means that you would have to pick either "joystick_*" or "gamepad_*" functions depending on your choice; trying both will result in errors. Like I said, it is a mess; do not bother for the time-being.