{"id":18048267,"url":"https://github.com/relintai/the_tower","last_synced_at":"2025-07-07T22:13:09.517Z","repository":{"id":107319227,"uuid":"271518679","full_name":"Relintai/the_tower","owner":"Relintai","description":"A really simple demonstration project for Voxelman.","archived":false,"fork":false,"pushed_at":"2022-02-18T09:36:06.000Z","size":673,"stargazers_count":27,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T01:36:30.694Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Relintai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-06-11T10:34:27.000Z","updated_at":"2025-03-25T12:13:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"a781746c-fc44-4833-b422-5b3ff3408fb5","html_url":"https://github.com/Relintai/the_tower","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relintai%2Fthe_tower","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relintai%2Fthe_tower/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relintai%2Fthe_tower/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relintai%2Fthe_tower/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Relintai","download_url":"https://codeload.github.com/Relintai/the_tower/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248197498,"owners_count":21063619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-30T20:12:15.902Z","updated_at":"2025-04-10T09:50:28.793Z","avatar_url":"https://github.com/Relintai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Tower\n\nA really simple (and visually strange) demonstration project for Voxelman.\n\nIt is a first person parkour game. Reach the weird glowing teleporter at the end of each level.\n\nIn order to open this, you need to have a Godot built with [voxelman](https://github.com/Relintai/voxelman) added!\n\nYou can either just get an executable at the [releases tab](https://github.com/Relintai/the_tower/releases), or \nyou can build one yourself see [here](#compiling).\n\nYou can also try a live version running in the browser [here](https://relintai.github.io/the_tower/).\n\nUnfortunately the web editor needs custom http headers to work and I can't set that up from github.io, so right now I don't have a hosted version of that.\n\nUses GLES3, and is loaded with effects. It will likely make low powered devices (like phones) cry.\n\nShould work on all platforms (even when there is no threading available).\\\nIt does not have touchscreen controls tough.\n\n## Controls\n\n`w`,`a`,`s`,`d`: Movement \\\n`space`: jump (you can also double jump) \\\n`shift`: run \\\n`r`: reload level \\\n`esc`: ingame menu\n\n## Screenshots\n\n![The menu](pictures/screenshot_menu.jpg)\n![The game](pictures/screenshot_game.jpg)\n![A teleporter](pictures/screenshot_teleporter.jpg)\n![The editor](pictures/screenshot_editor.jpg)\n\n## Assets\n\n### The sound effect\n\nhttps://opengameart.org/content/foot-walking-step-sounds-on-stone-water-snow-wood-and-dirt\n\nAuthor: \\\nJute (Submitted by qubodup)\\\nThursday, February 11, 2010 - 02:27\\\nArt Type: Sound Effect \\\nTags: snow step walk walking movement dirt Wood water wet footstep foot run Action RPG Fantasy Other\\\nLicense(s): GPL 3.0, GPL 2.0\n\nThese sounds were made by Jute for DungeonHack. They are based on sounds from pdsounds.org.\n\nI did modify the effect I use from it.\n\n### The font\n\nThe font is licensed under the Apache License. (it's next to it.)\n\n## Editing the game\n\nGrab an engine which has voxelman built in, and then open the project inside the `game` folder.\n\n## The provided engine\n\nCurrently this project uses [my fork](https://github.com/Relintai/godot) of godot (3.x). \\\nThis contains a port of [TokageItLab's SkeletonEditor pr](https://github.com/godotengine/godot/pull/45699).\\\nThe original godot source will work, if you want to use that in your build.\n\nAlso, it doesn't just come with voxelman and it's optional dependencies, I decided to include (keep), \nsome of my more useful modules aswell.\n\nhere's the full list:\n\nhttps://github.com/Relintai/entity_spell_system.git \\\nhttps://github.com/Relintai/ui_extensions.git \\\nhttps://github.com/Relintai/texture_packer.git \\\nhttps://github.com/Relintai/godot_fastnoise.git \\\nhttps://github.com/Relintai/mesh_data_resource.git \\\nhttps://github.com/Relintai/props.git \\\nhttps://github.com/Relintai/mesh_utils.git \\\nhttps://github.com/Relintai/thread_pool.git \\\nhttps://github.com/Relintai/voxelman.git\n\nIf you don't want some of these in your build, then you can remove them by editing the project's [module_config.py](https://github.com/Relintai/the_tower/blob/master/module_config.py) file.\n\n\n## Compiling\n\nFirst make sure, that you have everything installed to be able to compile the godot engine. See [the official docs for compiling Godot](https://docs.godotengine.org/en/latest/development/compiling/index.html) for more info. My setup/compile script uses the same tools, so\nyou don't need to install anything else.\n\nNow let's clone this repository:\n\n``` git clone https://github.com/Relintai/the_tower ```\n\ncd into the new folder:\n\n``` cd the_tower ```\n\nNow let's run the project's setup script, by calling scons without arguments.\n\n``` scons ```\n\nThis will clone and setup the engine, and all of the required modules into a new `engine` folder inside the project, using http.\n\n(If you want to use the github's ssh links append `repository_type=ssh` like ``` scons repository_type=ssh ```)\n\nOnce it is done you can compile the engine.\n\nTo build the editor on windows with 4 threads run the following command:\n\n``` scons bew -j4 ```\n\nTo build the editor on linux with 4 threads run the following command:\n\n``` scons bel -j4 ```\n\nI call this feature of the setup script build words. [See](#build-words).\n\nOnce the build finishes you can find the editor executable inside the `./engine/bin/` folder.\n\nFor convenience there is a provided `editor.sh`, or `editor.bat` for running it from the project's folder.\nThese will create a copy, so you can even compile while the editor is running.\n\nAlternatively if you don't want to use build words, you can also just go into the engine folder:\n\n``` cd engine ```\n\nAnd compile godot as per the [official docs](https://docs.godotengine.org/en/latest/development/compiling/index.html).\n\n### Build words\n\nThe project's setup script contains support for \"build words\". These can be used from the root of this project.\n\nFor example to build the editor for windows with 4 threads you can use:\n\n``` scons bew -j4 ```\n\nThe first argument must start with b (build), then it needs to be followed by a few abbreviations (the order does not matters)\n\nThe rest of the arguments will be passed directly to godot's scons script.\n\n#### Editor\n\nAppend `e` to build with `tools=yes` a.k.a. the editor.\n\n``` scons bew -j4 ```\n\nif you omit `e`, the system will build the export template for you. For example:\n\n``` scons bw -j4 ```\n\nThis will be the `release_debug` windows export template.\n\n#### Platform abbreviations\n\n`l`: linux \\\n`w`: windows \\\n`a`: android \\\n`j`: Javascript \\\n`i`: iphone (Not yet finished, use `build_ios.sh`, and `build_ios_release.sh`) \\\nMac OSX: Not yet finished, use `build_osx.sh`\n\n#### Target abbreviations\n\nBy default the system builds in release_debug.\n\nAppend `d` for debug, or `r` for release.\n\n``` scons bewd -j4 ```\n\nbuild editor windows debug\n\n``` scons bwr -j4 ```\n\nbuild windows release (this will build the windows release export template)\n\n#### Shared modules\n\nNote: This only works on linux!\n\nappend `s` to the build string. \n\nOptionally you can also make the build system only build a target module, by appending one of these:\n\n`E`: Entity Spell System \\\n`T`: Texture Packer \\\n`V`: Voxelman \\\n`W`: World Generator \\\n`P`: Procedural Animations\n\nExample:\n\n``` scons belsE -j4 ```\n\nbuild editor linux shared (Entity Spell System) with 4 threads\n\nNote: to easily run the editor you can use the `editor.sh` or `editor.bat` in the root of the project.\n\n#### Other\n\nAppend `v` to pass the `vsproj=yes` parameter to the build script. This will generate Visual Studio project files.\n\n#### Postfixes\n\nThere are a few postfixes for the build words. These are more complex options. You have to append them to your build word with an underscore.\n\nYou can use as many as you want.\n\nFor example:\n\n``` scons bel_slim_latomic -j4 ```\n\n##### slim\n\nWith this postfix you can build a slimmed down version of the engine. This disables quite a few unneeded modules.\n\n``` scons bel_slim -j4 ```\n\n##### latomic\n\nIf you get linker errors while building the game/editor about undefined referenced with atomic related functions you can use this postfix.\nIt will add the ` -latomic ` command line switch to the linker flags.\n\nI ran into this issue while building on a raspberry pi 4 with the x11 platform. It might be related to the recent reworks to threading.\n\n``` scons bel_latomic -j4 ```\n\n##### strip\n\nAppends `debug_symbols=no` to the build command, which will strip the resulting binary from debug symbols.\n\n``` scons bel_strip -j4 ```\n\n##### threads\n\nAppends `threads_enabled=yes` to the build command. Useful for building the editor for html.\n\n``` scons bej_threads -j4 ```\n\n#### Scons cache, and sdk locations\n\nIn order to use scons cache and to tell the build system where some of the required sdks are located you usually \nhave to use environment variables. Most of the time you might just want to add them globally, \nhowewer this is sometimes unfeasible (e.g. you don't have administrator access, or you just want to have\nmultiple sdk versions installed).\n\nIn order to solve this a build config file was added.\n\nIf you want to use the config simply rename the provided `build.config.example` to `build.config`, and customize \nthe settings inside.\n\n### Manual Setup\n\nIf you you don't want to use the setup script (or just want to know what it actually does), \nthis section will explain how to set everything up manually.\n\nFirst clone godot. Either my fork (recommended at the moment):\n\n``` git clone https://github.com/Relintai/godot.git ```\n\nor the official 3.x master:\n\n``` git clone https://github.com/godotengine/godot.git -b 3.x ```\n\ngo into engine's modules fodler.\n\n``` cd godot/modules/ ```\n\nNow go ahead and get every single required engine module from [here](#the-required-engine-modules).\n\n``` cd ../../ ```\n\nNow if you look at the [HEADS file](https://github.com/Relintai/the_tower/blob/master/HEADS).\n\nIt contains the commit hashes for that particular revision for every module and the engine.\n\nYou need to go through them and checkout the proper commits.\n\nNow you can go ahead and compile godot normally.\n\n## Pulling upstream changes\n\nFirst pull the changes by calling\n\n``` git pull orgin master ```\n\nThen just run `scons`, to update the modules.\n\n## Upgrading the modules\n\nNote: this is how to update the HEADS file. Normally you don't need to do this.\n\nIf you want to update the modules, and the engine to the latest, you can use (`action=update`):\n\n``` scons a=u ``` \n\nYou can also update different targets: `all`, `engine`, `modules`, `all_addons`, `addons`, `third_party_addons`\n\nFor example to update the engine to the latest: ``` scons a=u target=engine ```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelintai%2Fthe_tower","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frelintai%2Fthe_tower","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelintai%2Fthe_tower/lists"}