August 2023
Well, it's been a while. Since the last post literally last year, I have been working almost nonstop on that "super secret project," if you even remember me mentioning that ages ago. Well I am finally glad to say that the "super secret project" is now in Closed Alpha testing, and I am more than eagar to show everyone what I have been working on for more than a year now!
Project Hypernex
What is it?
Project Hypernex is the name for what I have been working on for over a year now. It is a social (Non/)VR Sandbox that aims to bring together people from everywhere, familiar to use, and make it easy to express yourself. There are plenty of ways to achieve these goals on the platform, which I will go into more detail below.
What Engine?
Hypernex is powered by the Unity Engine, more specifically Unity 2022.3.5f1 (bound to be upgraded in the coming future). The decision for this was because of how many people who participate in other sandbox games finding Unity easy to use, and integrated Game Engines limiting or difficult to grasp. Hypernex also uses the Universal Render Pipeline to improve cross-platform support with shading and to allow developers more creativity when working with the rendering pipeline. Please watch the video to learn more about the URP, how to use it, and why I chose to use it.
What can I use to create content?
Hypernex uses what is called the Hypernex CCK (Content Creation Kit), which is a kit of tools which help you create content and upload them to a server. The CCK will make sure you have the correct Unity configurations and packages, and help you with creating content to upload to the platform. The CCK was designed to be very modular, where there is only two scripts and the rest being assemblies. Doing this makes upgrading the CCK stupid easy, not ever having to worry about scripts not updating correctly.
The CCK also makes sure that content is ready to go for all platforms, providing components such as the MaterialDescriptor, which will hotswap materials at runtime based on platform (which shouldn't even be necessary because of URP), and making sure all assets are built for commonly supported Graphics APIs (currently, Direct2D12, Direct3D11, Vulkan, and OpenGLCore).
Along with Asset creation, developers are provided scripting for all assets (which are currently only Avatars and Worlds, but planned to add more content types in the future). Scripting is available for everything; you can script locally on your avatar, locally in the world, or on the server in the current instance. Coding is textual and you can code in either Lua or JavaScript (with more to come in the future).
What Platforms are Supported?
Currently, only Windows and Android (for Oculus Quest/Pro) are supported; however, support is planned to be expanded to Linux, and other Standalone VR Headsets. There will be no support for the following platforms for the following reasons:
macOS/iOS/tvOS
No other Graphics API besides Metal (excluding the now deprecated OpenGLCore), which would require the user to own a Mac to build assets for the Mac platform.
This will never change as Apple themselves require applications to use Metal to be published to the App Store.
Xbox/PS4/PS5/Nintento Switch
Special Licensing is required to build to the specified platforms
WebGL
Too many restrictions; more hassle than it's worth
Universal Windows Platform
Why?
VR is handled on Windows with OpenXR completely, absolutely no OpenVR. This ensures that the application is run with whatever hardware the end-user wants to use. On Android, currently only the Oculus SDK is used. This will not change until Unity's Mono releases to ARM64, which will likely never happen. Other SDKs for other Standalone HMDs on Android may be supported in the future.
What are some simple features?
Fully Open Sourced
This means one person can create an instance, invite more people, and the instance creator can leave without everyone being kicked
This also means developers can store code in the server safely
Such as an API Token
Assuming AllowAnyGameServer is configured as false in the Server Config
Selectable protocols for different scenarios
Scripting everywhere
LocalAvatar
Scripts that run on the client on an Avatar
Local
Scripts that run on the client in an instance
Server
Scripts that run on the GameServer hosting an Instance
Full Body Tracking
Currently only three extra trackers are supported (Left Foot, Right Foot, and Hip)
Trackers must be given a role of Left Foot, Right Foot, or Waist
Role doesn't matter, just as long as a tracker is given one of the three listed roles
Facial Tracking with VRCFaceTracking v5
Requires specially built assemblies targeting netstandard2.1
Source will be released soon
DynamicBones, MagicaCloth, and FinalIK
FinalIK is required to build
DynamicBone and MagicaCloth are optional assets when building
Eventually, I hope to move away from these libraries and code my own, but I just don't know enough Math yet :(
Avatar searching
Because apparently this is a feature that is rare to come across 🤷
Scriptable Shader Graphs using SRP
Hotswapping between Desktop and VR without having to restart
Currently triggered by hitting F5, but will be implemented into the UI probably
Beautiful and Informative Discord Rich Presence
Highly Configurable
You can literally configure which audio compression to use
Plugin API built in (it's built into Hypernex.CCK!)
As much as I love tools like Unity Doorstop and MelonLoader, they are not required to modify the game
Kinda useless since code is open source, but it prevents niche features from being implemented into a billion different clients
And I mean Client as an actual separate client, not a mod with a bunch of features
Dynamic UI Theming
Themes can be created at runtime with Plugins (for example)
Themes can also be swapped during runtime
Intuitive VR Camera
Attach to Avatar
Output Camera to Screen
Attach Camera to Tracker
Set Tracker role to Camera and activate
Follow Avatar
Take photos in 720p, 1080p, 1440p, 4k, 8k, and 16k
Customizable profiles
Emojis can be displayed in-game
Using Twemoji or Noto Emoji
PNG, JPEG, JPG, or GIFs can be used as Profile Pictures and Banners
Pronouns are displayed directly on a user's template
Pronouns can be set or removed on the Profile page on the website's dashboard
Should go without saying, but you don't need to pay to customize your profile
Expression shouldn't have a price tag
It's Secure
Passwords are hashed using bcrypt with a heavy salt
Yes, I can say this without compromising password security
2FA with an Authenticator App
Private Assets cannot be downloaded without a token granted from the Asset's creator
This gives users full control over who can download and use their private assets and who can't
No direct access is given to any database or bucket to a client
I'm not even kidding, I have seen people do this before
Optional AntiVirus scan using ClamAV for file uploads
Integration is still a WIP and may not function correctly
Full Cloudflare proxy support for the WebServer, File Uploads, File Downloads, and WebSocket on the Free Plan.
and there's probably more I'm forgetting, so sorry if you find something unexpected that I forgot to mention.
Can I see a demo?
sure
How can I join the Closed-Alpha program and test this?
Join the Discord Server
Navigate to the #roles channel
Scroll up and opt-in to the Tester role
dVRC
Another Side-Project I worked on a while ago that lets you download your assets from VRChat, and extract the AssetBundles using AssetRipper
Here's how to use it
Import into a project with the VRCSDK
Support for the VRChat Creator Companion is limited
Open the VRChat SDK Window
Login if Required
Navigate to the Content Manager tab and make sure all your assets load
Open dVRC > Main Window
Download AssetRipper
Select either an Avatar or World to download
Download the Asset
Return to the Home Page of the Main Window
Select the Asset under the Manage Files tab
Depending on what you want to do, follow the next steps
Preview Asset
Load into Scene
Remove the Downloaded Asset
Delete Asset from Disk
Extract (rip) the Files to a Unity Project
Extract Assets to Folder
Make sure the directory is NOT inside of a current Unity Project
Make sure the Folder you are extracting to is empty
AssetRipper will DELETE ALL FILES in the selected Directory
Open the Extracted Assets in Unity
Delete all Scripts and Shader files (if the shaders are broken)
Reimport all old Scripts and Shaders and fix any broken Assets
THIS SHOULD ONLY EVER BE USED AS A RECOVERY TOOL!
Okay thank you for reading if you made it this far, so uhh yeah see you in the METAVERSE! lmao if anyone calls hypernex a metaverse im shutting everything down,,,, (/j)