Goosifer Posted December 20, 2023 Author Posted December 20, 2023 Just an update on this project: I haven't had time to touch EMU since early November but I'll hopefully push out at least a couple more updates this Winter. Right now there's a potential problem of race conditions. Without getting too wordy: I need to figure out how to make Zoo Tycoon and EMU play nice with each other in case both want to update an in-game value at the same time, such as the budget. After that, the first 'official' release should be ready to publish and I can start exploring more exciting parts of the game to manipulate.
Goosifer Posted January 17 Author Posted January 17 EMU_v1.0.0-alpha.5 First off, a big welcome to our team's newest contributor: wowjinxy. She has been a massive help mapping out the game's subroutines. Core Changes EMU now hooks onto main game loop for main thread synchronization. Currently the Lua script engine runs on the main game loop. Console Changes When CTRL+J is pressed to call the console window, it attaches itself to the top right corner of the main game window. Limitation: Still not dynamic enough to stay fixed to the corner when game window is moved, resized, etc. Console stays ontop of the main game window Limitation: This only happens in windowed mode, console isn't visible in full screen. It also has the side effect of keeping Z-Order focus over other opened windows if you minimize Zoo Tycoon. If it's obtrusive, close the console with exit. exit command now terminates the console window safely and does not close the game. Console no longer shows in taskbar as another application. Possible Solutions for Another Day Will try to hook the main window procedure in a future version to handle specific main window events and synchronize console display properties dynamically. (i.e. minimize when game is minimized, stay ontop when game is full screen, etc) Other GUI experiments if this is doing too much. Next release will finally mark the first major release. Targets for next release Set console to run on main game thread. Add new API functions for game manipulation. Add help console command with list of all console commands. Write and record tutorials that show how EMU works. Refactor all code for polish. Credits Special thanks to wowjinxy for her help finding the game loop used in this update. To Install Download here: https://github.com/openztcc/EMU/releases/tag/v1.0.0-alpha.5 Drop all of the contents of the binary release zip into the root Zoo Tycoon folder.
Goosifer Posted January 26 Author Posted January 26 EMU v1.0.0 (First official release) Download here: https://github.com/openztcc/EMU/releases/tag/untagged-b4b69f2ea87b4f029d67 This marks the first official release of EMU, the Zoo Tycoon scripting API that enables modders to modify the game in ways not possible before. Bug Fixes/Improvements Console commands run on main game loop now. Fixed exit command not closing command console. Misc command console fixes. Command console is color coded for errors, some messages. Added global variables to Lua scripts _globalAnimalRating: Sets the animal rating per loop. _globalGuestRating: Sets the guest rating per loop. _globalZooRating: Sets the guest rating per loop. New console command devmode <true/false>: Set to true to enable dev mode; false to disable. This lets you enable dev mode without messing with ini settings! Credits Massive thanks to wowjinxy and Finn for their help figuring out how the game ticks!
Goosifer Posted January 27 Author Posted January 27 EMU v1.0.1 This is just a hot fix release. Bug fixes Fixes bug where the zoo ratings were not displaying correctly if you only had EMU installed without any script hacks. I submitted to ZooTek for approval. If you have v1.0.0 downloaded, I recommend this newest version to fix the bug. For more the release page with the file: https://github.com/openztcc/EMU/releases/tag/v1.0.1-release 1
Goosifer Posted March 16 Author Posted March 16 Another feature preview for Emu v1.1.0 that's hard to demonstrate without video. Feature: Hot Reload Update configuration on any object and see the updates in the game without having to re-zip your files or re-launch your game. In my example below, I have a config file open for the Large Rock. By default it can be placed on water, auto rotate, and is not selectable. With hot reload, I changed all of that configuration without leaving the game and saw the updates live on the right. I also changed the footprintx and footprinty! I tried recording a video but they all came out awful hahaha. I was nearly tempted to go full Youtuber and do a face reveal but you all shall be satisfied with cartoon me in the pfp. 1
Goosifer Posted March 20 Author Posted March 20 You might have noticed me post a bunch of tutorials about EMU scripting today. I meant to follow it up with an EMU v1.1.0 release but I just need to fix a few things before it's ready, but hopefully later today or tomorrow! I'll have the invisible fences ready by then as well.
Goosifer Posted March 21 Author Posted March 21 EMU v1.1.0 Released Features Scripting has been expanded to entity and entity type operations. This means we can create scripts that edit the current state of scenery currently placed on the map. Currently limited to most scenery and buildings; animals, guests, and staff will be for another update. For a full overview of all Lua functions available on this update, please see: World Manager API. Provides utility functions to obtain entity and entity types from the world state. UI General API. Provides utility functions to obtain entity and entity types from player actions, namely selecting entities like buildings. Entity API. Functions that let you operate on entities currently on the map. Entity Types API. Functions that let you operate on entity templates. Think of these as parent classes to entities. Game Manager API. Operate on the current zoo state, such as budget, pause, devmode flag, etc. Considerations Temporarily disabled _setZooRating, _setAnimalRating, _setGuestRating from the Game Manager API while we figure out a way to re-implement them instead. They're a bit problematic to hook because they're essentially a live calculation and setting a value is limited to a persistent loop to keep the value there. Removed unnecessary console commands not useful for the development of the project. For an up-to-date list, check out EMU Console Commands Game Manager API function names have been updated to camel case to stick to a consistent style across the project. Documentation Better documentation now available for this project if you'd wish to learn how to script Zoo Tycoon 1 using EMU API. Visit Zooberry Docs: EMU API documentation EMU Scripting Tutorials Discord We now have a Discord. Join us here: https://discord.gg/KcpedmghWm Download Will be available on ZooTek soon, but on the meantime is available for download here: https://github.com/openztcc/EMU/releases/tag/v1.1.0-release 2
Goosifer Posted March 22 Author Posted March 22 Just for posterity, a note about EMU API and anti-virus false-positives: Due to the nature of how the API runs by injecting code into the running game process and dynamic script execution, your anti-virus software may flag the API as a false positive due to this behavior. This is common with modding tools in other games and is generally safe to ignore. This API is and will always be open source. If you have any concerns about the safety of the API, you are welcome to inspect the source code yourself or build the API from source. https://github.com/openztcc/EMU/ It's possible you might need to add the `res-EMU.dll` to your anti-virus software's exclusion list to prevent it from being flagged as a false positive. 1
Goosifer Posted April 15 Author Posted April 15 Hi. I wanted to write a quick announcement. The short of it is: I'm retiring EMU from further development. It's not the end of the road for the utility it brought though. Finn and I have been working on OpenZT over the past year and lately it's been full steam ahead. Everything EMU can do it can do but better. If you liked my scripts that worked with EMU, they'll live on in OpenZT. More information in the Summer :) Or join our Discord in my signature link. 1 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now