- JavaScript 43.2%
- GDScript 39.1%
- HTML 13.9%
- GDShader 2.2%
- CSS 1.4%
- Other 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .idea | ||
| addons | ||
| InternalResources | ||
| InternalScenes | ||
| InternalScripts | ||
| samples/godot_whisper | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| aimCursor.kra | ||
| aimCursor.kra~ | ||
| aimCursor.png~ | ||
| base.tres | ||
| CSGStairMaker3D.tscn | ||
| default_bus_layout.tres | ||
| export_presets.cfg | ||
| icon.svg | ||
| icon.svg.import | ||
| kanban_tasks_data.kanban | ||
| LICENSE | ||
| openxr_action_map.tres | ||
| project.godot | ||
| README.md | ||
| TestInteract.gd | ||
| TestInteract.gd.uid | ||
| TestScene.tscn | ||
Holofed Godot client/server
This is main part of Holofed project - experimental virtual world platform, which wants to be as libre as possible (that's why I picked Godot as game engine) and have ActivityPub-based federation support.
WARNING!
Although master server part has encryption support via HTTPS (depending by WSGI server) and PGP (latter required by ActivityPub), game server is only partially protected. ENet UPD (used for actual multiplayer) is protected with DTLS (enabled by default), but HTTP TCP (used for map serving) is not. MITM attacks are still possible while downloading the map. You have been warned.
You can also provide custom key and certificate by placing custom.key and custom.crt into %godot_user_folder%/cert. Both files have to be present, otherwise server will generate self-signed key and certificate for the time of hosting the instance.
As of now, scripts in both avatars and maps are loaded "as is". Untrusted scripts are effectively sub-programs, and they can do nasty things! Some sort of sandbox may be implemented in the future.
Unless you're on Windows or Linux, login token is stored in plain text inside user folder. While it's okay on Android and (potentially) visionOS (iOS), it's extemely insecure on MacOS or Web (although latter two have limited or no support).
Also it's mostly WIP (Work In Progress), and mostly only core features are implemented. It's being done in my spare time, amount of which is unstable.
If you're on Linux, ffmpeg must be installed system-wide to make playing videos possible from Youtube, Vimeo, PeerTube etc.
Currently implemented
-
basic desktop/VR locomotion (WASD/left controller stick for movement, Space/right controller X to jump, mouse to turn around, right controller sitck for snap turning)
-
VoIP (V/left controller A to toggle mute)
-
Basic object interact (E/controller trigger to interact)
-
Basic object grab (E/controller grip to toggle grab)
-
Downloading map from the server (with MD5 and name checks to download only when needed)
-
Connection to master server (instance browser, optional login to access non-public instances, creating instances)
-
Direct connect (allows to use this part as standalone program)
-
CLI launch parameters (custom ones along side Godot ones, used primarily by master server to launch instance in dedicated mode)
-
Offline viewer mode (launched with
--viewerargument or from "Browse local maps" button in login screen). On Web build, it's the only mode available -
Encryption of game server (DTLS)
-
Automatic forward ports with UPnP
-
Avatar system (7 built-in ones + ability to load custom ones from Relay)
-
Basic support for standalone VR Android headsets (such as Quest, Pico etc.)
-
Saving settings and login token (in secure way where possible)
-
TV (Video player) with 3d sound and online videos/streams support (native builds only; Youtube, Vimeo, PeerTube etc. are NOT SUPPORTED on standalone builds; streams are not supported for macOS as well)
-
Traditional chatbox system
-
SST-based chatbox (GPU-accelerated Whisper running locally). Hidden by default, processing is disabled on low-end devices by default, all of that can be changed in settings.
-
Instance-togglable "cheats" (only noclip for now)
Nearest plans
-
Improved locomotion/character controller
-
Asyncronous map loading
-
Portals system (semi-seamless)
-
Calibration system for full body tracking (VRChat-like)
-
Either add SSL encryption for HTTP (map) server or swap it with WebSocket.
Contributing
How to contribute
Join the tapafon's project Space on either or
. Both communities are bridged, so you won't miss anything - feel free to choose!
Forgejo is invite-only for now, that may change in the future.
Contributions mean not just PRs and issues, but also participating in WAN tests and discussing potential ideas.
(gen)AI policy
All generative models are enhanced autocompletes, which can only predict what human COULD make (pattern-based), mostly limited to whatever was in their dataset (which may include copyrighted/patented/illegal data) and therefore mostly stuck in the past, unless retrained from scratch, which requires even more resources than inference.
However, significant amount of people overestimate their capabilities and start to misuse them, to the point they speedrun . That includes delegating whole projects to AI agents, with little to no human testing, manual fixes etc. Windows 11 and Omarchy are the most famous results of that (linux kernel is next?).
To reduce any new harm made by genAI, genAI usage is banned with two and a half expections:
-
using it as glorified search engine (because modern search engines suck, especially when most stuff which should belong in forums accessible to everyone, at least read-only, ends up in group chat applications such as Discord, which are not indexed by search robots as a rule).
-
Only local LLMs can be used, running on your GPU/NPU/CPU in something like LM Studio or Ollama. That means that any usage of Gemini, ChatGPT, Claude or other cloud models is banned whatsoever, so is using rented cloud VM (which includes but doesn't limit to Google Collaboratory) to run LLM for you;
-
Despite so-called AI agents (Codex, Claude Code, OpenCode, OpenClaw) can do web search too, their usage is banned whatsoever;
-
You must not link to/include AI summary of that "result" as source (especially sole one). Instead, review original URLs LLM fetched, and link to them directly, since LLM still errors as a rule.
- Yes, that means you must install web search plugin if your inference tool doesn't have one built-in. But if SearXNG is involved, you must self-host your own instance.
-
Even that usage is discouraged, and should make your own research in old-fashioned way if you can.
-
-
brainstorming is temporarily allowed until I get enough people in Discord/Matrix to discuss ideas with.
- Same sub-rules as above apply here.
-
accesibility features (allowed case-by-case), such as STT for deaf people
-
Only local models may be used;
- On top of that, they must not consume substantial resources (VR is already resource-hungry), a.k.a. >=85% of GPU usage must be directed to rendering frames. Those two rules ban all LLM-based solutions;
-
On low-end hardware, they must be disabled by default. Moreover, user must be able to disable those features in Settings;
-
As soon as plugin system is developed, and design does not require computations from every single player, it must not shipped with core application, and must be shipped as a plugin instead;
-
ACCESIBILITY MUST NOT GO "AT ALL COSTS". WATCH AND LEARN, MASTODON 5.0.
-
Any other AI usages, especially ones which will directly affect project, which include but don't limit to generating substantial amounts of code, generating assets like images or 3d models, generating issues, pull requests, translations or just being a so-called meat proxy, is banned whatsoever.
TL;DR Usage of generative AI is mostly banned, and parts which aren't are extremely limited.
If I wanted to vibe-code the entire project, I would do that on the day one.
This policy is subject to change, depeding on current situation.
Installation/upgrade/development
For initial install (depending on platform):
-
Unpack
Windows.ziporLinux.zipon PC -
Unpack
Web.zipand then copy to your web server. The latter one should be properly configured, like such: https://gist.github.com/nisovin/cf9dd74678641fb70902866c79692b17 -
Install
HoloFedPrototype *.apk, where * stands for your headset. Q1 stands for Quest 1, Q2+ - Quest 2 and newer, others should be obvious.
Then launch executable on PC, index.html (where you unpacked) on Web, or application in standalone headset.
For upgrade, reunpack zip folder over older one or install *.apk file again.
For development, cloning repository and opening the project in Godot editor should be enough.
How to create/port a map for HoloFed
See , as well as TestScene.tscn for reference. *.tscn, *.pck files and folder with resources must have the same name.
Than export the project (ideally only ExternalMaps folder) as *.pck file, and put it into %godot_user_folder%/maps. All neccesarry folders will be created automatically on launch if missing.
How to create/port an avatar for HoloFed
See built-in avatars for reference. Then use as a starting point.
Export project (ideally only ExternalAvatars folder) as a *.pck file. Upload it into Relay with your web browser.
Credits
This software uses FFmpeg code licensed under the GPLv3. You can get the source code for this version of FFmpeg here: https://github.com/EIRTeam/EIRTeam.FFmpeg
Other addons are licensed under the MIT License (some components of them may have different licenses), with notable exception of Kenney Prototype textures (CC0).
"Humanoid Avatar with Rig" (https://skfb.ly/otUFC) by 3DStory is licensed under Creative Commons Attribution (http://creativecommons.org/licenses/by/4.0/).