#server-plugins-read-only
1 messages · Page 33 of 1
DLC when in early access doesn't even make sense 💀
Like, finish the game lil bro
Yes, that was kinda what people said
I guess microtransactions I can kinda understand to support development. But paid DLC in a game that hasnt officially released is a bit odd
Cosmetic micro-transactions can actually be argued that the base-game cosmetics are already all present
With a DLC you're making new parts of the game that isn't out
lmfao that's not even early access
that's just releasing a buggy game
Like people already paid for you to finish the game and you're charging them again
how much did ark early access cost versus their full release?
Not sure honestly, ARK was all over the place it felt
I played it a lot when it was still relatively new, but gave up on it after a while. Game ran pretty badly
oh bruh it's still not out
So ARK is still in EA even though they are working on ARK 2?
okay wait they have a lot of arks
evolved is out, ascended is EA, ark 2 is unannounced
ascended has DLCs despite being early access lmao, and a season pass or something
it's looks like a live service game 🤦🏻 not an early access one
And then people wonder why we say "Steam's early access doesn't mean Early Access"
Tech interview spoiler!
||The new Tech interview confirmed modders will have the capability to create server-side cosmetics, adjust cameras, edit npcs and interactions, edit inventories, and create custom UI's! ||
Excited to see what we can create out of this!
That's nothing new?
except camera angles but that doesn't mean much, eg are they static or full on camera paths
We already saw the change of camera angles in the trailer 7 years ago...
I think all of this was already known right?
Yes
It's really just the client stuff that is new
We have already been told that, we can modify everything they can.
Not the client
Client side texture packs and shaders is new
i thought they said shaders wouldnt be a thing earlier
And then the community asked and so they reconsidered
This is what having devs listening to the community means 😛
ya that was a today tweet and that also after the tech lead interview
cool, then we can make some cool effects instead of just particles
Is client side texture packs going to be a thing on release, or is it coming later
Probably later
I thought about coding an in-game texture pack loader that simply just assigns server-side textures to specific users upon their choosing.
I read they are considering something like data-pack, but no work has been done on it. So later additions
Possibly a good idea for more experienced modders, I might have trouble with something like this
Custom uis is too much
???
Ui should be standardized across servers. At least the elements. If it's customizable there should still be limitations.
What? Why? It makes no sense
Better player experience across servers
well, they are pitching hytale as a platform and every server as a new experience.
Each server can have its own custom experience.
Should a FPS have the same UI as a top down MOBA?
Roblox's custom experiences work better for me than Minecraft's custom experiences. I believe being able to edit almost every asset of a game allows for better immersion.
If every server had a similar standardized UI like the scoreboard on Minecraft, would be hard to enjoy a custom gamemode without it breaking immersion
This is going to make playing on smaller servers a terrible experience because they will all try their own custom UIs but probably fail disastrously. While larger servers will probably use custom UIs for intrusive "buy cosmetics from the store" popups.
I mean servers don't have to customize the UI. Giving the option to do so is very based tho, no argument can be made honestly
Hytale is not and should not be responsible for the quality of fan-made servers
Im gonna be honesty, 99% of servers will just use the default.
as they should.... most servers wont have something to offer that different.
sounds like a problem for the servers ¯_(ツ)_/¯
My goat thank you
If a server's ui is bad, let them fail and learn and improve. That's now we grow as a community
I get that making it standardized can be useful, and we do provide that but we also want to allow people to build what they need
We won't think of everying so sometimes you just gotta break the mould and do what you need
Yeah using roblox as an example, there is really poorly made experiences, and really well made experiences. The advantage Hytale has is that there is a "base" art style that looks really nice that people can default to if they don't have the time or skill with making assets.
And with time, we will have many solid templates and examples from open source mods that do it well
And it will atleast be better than a certain other game where you have to use chest inventories as menus.
I have to admit, I'm very terrible at doing art so I will definitely stick to the default. Frankly I actually find the art limitation of a base game quite a nice challenge.
you want to use an item container as a UI, feel free, why should I stop you from doing that
Okay but... hear me out... I found it as a nice challenge to work with. Everything was nice and standardized, every button basically was an icon with some text and it was all same size
Ads in Minecraft are pretty much limited to scoreboards and boss bars
Or you could send a title with a custom font and block the entire screen. The point is that people will always find a way to advertise, the tools aren't the problem
"We shouldn't have cars because people will use them to kill people"
Some server owners will be pitching their ideas to investors like: "We estimate we can sell up to 80% of an individual visual screen before inducing seizures."
I don't know how this part of Minecraft works but I don't usually download textures for exactly reasons like this
Have you never played on a server like Wynncraft, Origin Realms, or MCC Island which requires custom textures???
Minecraft servers nowadays have the permission to disallow you to join if you don't accept their resource pack
No
You're missing on a lot of great content then
Honestly, Hytale might be the wrong game for you ^^
Ok so do you just play on like vanilla SMPs?
I used to play cube craft, cosmicpvp, Hypixel, mineplex, small vanilla servers, and some mid sized servers I don't remember anymore
Ok yeah well the point is a lot of modern Minecraft servers have server resourcepacks that are integral to the experience and you can't play without them. Old minecraft servers didn't mostly due to technical limitations
The vision for Hytale servers that Slikey has shared is that the servers have a unique style and game experience
"Remove Hytale, add Yourtale"
even Minecraft is bad for small game owners. If you want a large server you need to invest in hosting, developers, advertisements. It becomes less about your knowledge and more about how much money you can throw. My recommendation for new owners is to make Hytale servers now while everyone is enjoying the Vanilla gameplay.
@sacred tulip
i think having a KFC buy 16 strips for the price of 12 advertisment in the UI is kinda cool ngl
i just got some new ideas
Actually might help finance servers when we think about it
Maybe popups should be blocked until a 5s window within the latest user interaction and blocked on join like chrome handles popups?
I guess this wouldn't work since hytale will probably also want servers to have cookie banners
what cookies?
It's sarcastic
But Unlike chrome you won't have client side mods like adblocker
smh we haven't even discovered fire yet and already worried about late-stage capitalism
yeah I'm more and more convinced this guy is only here to troll. All he does is argue about restricting the features that make hytale unique
Only movement camera perspective and intrusive pop-up ads
Regardless, I'm entitled to my opinions and concerns and this is the channel to voice them
i like how active this chat is for literally talkign about nothing
wdym
what's your git
There is no API released yet so we're literally just speculating on what it might be like.
like my github account? why?
There are a bunch of implementation details confirmed and it's not like they're inventing a new language and processor architecture lol
Can you share some links to details? I'm new here. My experience is just a lot of Spigot plugins
Their blog post for one
And all of their Q&As, you can also look at Slikey on Twitter
fire, thank you
There's just one answered queston from Slikey, he's been answering them randomly for weeks now though
So that's why this channel is active lol
hi, do we know anything about the plugin api yet?
scroll up 6 messages
lmfaoooooo the timing of this message
breh
lmfao how big is your display
can you actually not see any of the previous messages at all
kinda i mean i think i didnt see that
it's all good hahaha
i was asking the same exact question 2 minutes ago
I hope it works like bukkit
It's like the #1 question, right next to "what language are the mods in"
Despite the channel description and search feature, and the blog post 🙈
Definitely will considering who developed it. Like I think we can just assume it’ll be really similar
I saw someone mention c# support which confused me
Some people think Java is a bad choice for the server and want to re-write it already 💀
The only real concern is about console not having the JVM, but that's a problem for later
Why would console not support a JVM
They don't ¯_(ツ)_/¯
Why would you wanna run the server on a console
Singleplayer
☝️
I literally just checked and both the Switch and Xbox have confirmed instances of JVMs working
I could most definitely be wrong but I would guess the singleplayer server is - even tho comparable to the actual java server - a stripped down, interconnected and very much closely architectured C# thing, as the devs talk solely about C# and NativeAOT and all that when talking about the client, no?
Oh well my mistake then
I mean it just has to adhere to the Hytale server protocol
No, the server is in Java. The client is in C#. The client opens a local server to run singleplayer
I mean that would explain the complications to provide the client for mobile & console lmao (apart from alot other things)
Well not to switch and Xbox apparently
Hmmm a "confirmed instance of JVM" does not really sound to me like a production-stable and fool-proof solution just ready to use
Basically anything can run Java, that's the whole gimmick
And you can even do some weird compilation-transpilation non-sense with GraalVM Native or whatever it's called
I don't know man. Ask @sharp lake
I play PC anyway
GraalVM Native Image does come with trade-offs, especially in regard to class loading, which probably defeats the current implementation of plugin loading
Yeah but mods?
I want to work with GraalVM too but I do fully expect to have to make a fair bit of adjustments to the distributed server files
but now that you mention it, if the client were a fully native application, singleplayer mods would be equally difficult
so ig some kind of dynamic loading has to be implemented, even if relying on JVM
well actually that kind of eliminates my guess that the singleplayer server might be done in C#
anywayyyys
By confirmed instances, I mean people have literally ran it
Slay the Spire is a Java game lol, and it released to the Switch years ago without a rewrite last I heard
Yea ig it shouldn't really be a problem for console
Idk anything about C# packaging but I wouldn't be surprised if that was the hard part of porting Hytale
Not the integrated server lol
What's wrong with C#?
Plenty of games are made with C#
Its perfect! - Also runs on literally anything! 😄
Well yeah. Hytale also uses native AOT to compile it down to machine code so...
Majority of games most people ever play is C#, and usually their backends are as well - Microsoft has also pushed this even further recently. But there is no real good hard number on this for stats. But C# and C++ Dominate the games industry by a HUGE margin
Case in point, even Hytale is in C# 🙂
This in no way means Java or any other language isn't capable. The ecosystem has changed within 10 years for C# to be dominant ever since Microsoft became a real force. And C++ has really only been the one with the libraries. So its the same as saying any language can do web dev (given they have the libraries and support for it)
I said that I didn't know anything about the packaging lol
C# and C++ do be working mighty well together
I don't know either, but by packaging what do you mean? Like distribution for the application? OR packages for development?
Both start with C, I am convinced
btw have you guys seen the Kaupenjoe interview with Slikey?
Yes
Love their openness to adding texture packs and shaders
We should make an F# Hytale plugin. Get your functional practice in
Let's invent the Hy# programming language
Runs on the .net framework?
On the .TALE framework
I need to watch that at some point
This would be hawt, it better be used in the game industry! - I hate Domain Specific languages...
Distribution
Oh. Yeah, that is usually language agnostic. Once you compile thats the result.
Hello I wanted to ask where I can learn about setting up a potential 3rd party server and how I would go about getting access to the api. Is there any early access of such for server hosting or the modding community?
The server .jar will most likely release together with the game in Janurary. A server hosting guide is planned to come out beforehand though
Sweet, I'll keep tabs on the website, and discord.
yes, the server jar will be available with the game the day we launch
Hi, does anyone know how the "transfer packets" will work?
If I have e.g a lobby server running on port 123 which is exposed and now want to transfer the player to a gameserver running on port 124.
Does this port have to be also exposed, or will the lobby on 123 work as a proxy?
The client will close the connection to the current server and open a new connection to the target server. Both servers need to have their ports exposed.
okay, so we will need to have a dynamic firewall if we want to scale our gameservers
or open a port range in the firewall
There is a workaround where you put both servers behind a QUIC proxy (like nginx) though if you want to only expose a single port
thx
Does QUIC support cloudflare proxy?
You'd have to look that up on the cloudflare proxy docs
Yeah, but not on the free tier since that only supports HTTP(S). You'd have to use Cloudflare Spectrum which supports custom protocols.
Cloudflare kinda lost a bit of image after the recent-ish incident
but honestly, if you already have a server that runs Hytale, might as well spin up an easy reverse proxy solution like nginx on it
What Protocol will Hytale use? Or a custom one? And will it use TCP or UDP (which could be solved by knowing the protocol ig)
It uses QUIC
Actually, nginx's QUIC support seems to be tightly coupled to the HTTP/3 framing. Makes it kind of a hard dead end. Welp, guess that gives me something to do tomorrow.
Unless the Hytale protocol is framed in HTTP/3 lmao
Don't think it is
would surprise me too
we need more info!
I am too scared to ping
@random magnet Mr.Slikey, people have questions about Hytale's protocol. I guess it will be in the server manual so sorry for the ping in advance!
Ask away @karmic bane
You tested it? It looked like it had stream handling in the source
I just don't have any QUIC applications to test with
So far I haven't found much of a proxy software that is QUIC compatible (not HTTP/3)
I asked ChatGPT, it also didnt know
It's not thoroughly documented usually
isnt there also a difference between google quic and ietf quic
like one is basically only http relevant and the other could in theory be used outside of http
I hope that QUIC is just QUIC, and that there are no 2 standards defining it
Slikey should be asleep atm lmao
well ietf quic would be the standardized one as theyd make an RFC for it
RFC9000 it seems
ig you could quickly use C++ to make a testbed, I didn't test yet too. I just relied on AI to tell me it wouldn't work for a custom protocol
Maybe I'll shortly have enough energy to rise from my bed, then I can test
My research comes up with Quilkin which seems to be exactly for this use-case, lol
udp proxy for large scale multiplayer games
udp is not equal quic
apparently caddy can do it with a layer4 plugin for generic udp stuff
a udp proxy would prob be the first to do generic quic though since its udp based
i mean kinda in the name of Quick Udp Internet Connections
It's still architecturally different
Kind of brings TCP onto UDP which makes it it own thing tbh, I am not too intimate with the workings tho, I'll read through the RFCs
It's not documented, so AI wouldn't know unless you asked it to skim the repository
Imma try to throw something together soon to test it
You can proxy QUIC with UDP proxies but you can't do load distribution I think
id be a bit worried if they used a protocol that isnt easily supported by load balancers tbh
You just have to actually read the QUIC headers to do it
QUIC will be more widely supported when Hytale reaches 1.0 😉
LOL true enough
you can also do load distribution with plain transfer packets. there are only a few use cases where a proxy is necessary
I mean load balancing is not really the most end-user relevant consideration, more likely in the interest of actual larger-sized server networks and nerdy people
If you have a bandwidth issue and that's what you need the load balancer for, this isn't a real fix
im only concerned as i am a nerdy people
Nginx
I mean, I definitely want a reverse proxy
I don't plan on opening a bunch of ports to get each server accessible
Have you tested it for streams?
yeah i cant find docs for nginx quic without it being http3 related
It's not documented 💀 💀 we know that much
Never tested it just remember he explicitly stated it
My trusty AI says its a hard dead end if not for HTTP/3 framing
Yeah but Slikey could've been assuming
Just skim the source and see if you come up with anything more conclusive than I did
He offhandedly stated it. Sounded like he was shooting from the hip
slikey/status/2000712433376088246
Q: Can transfer packets still work if your servers don't all have public IPs? Seems like that would require some sort of proxy
A: Yes, then you need a proxy but you don't need a bungee cord then, you can use a simple QUIC proxy such as Nginx to route your traffic.
They have the groundwork for pure streams, but I don't know if it's actually accessible
Fully utilizing QUIC for proper reverse proxy shi is def not supported for a custom protocol like Hytale has or even like Minecraft. Just forwarding the stream? maybe
Why do you think it's definitely not supported??
By nginx I mean
Or any published proxy mentioned here so far
It's not a fully custom protocol, it's QUIC lol
They're just QUIC streams, it's nothing fancy
Just like TCP streams, it's just a stream
If they don't have it hardcoded for HTTP3, then it'll be able to handle it just fine
Hytale has a layer 3 protocol over it just like Minecraft. As in, what packets (i dont mean udp datagrams or raw packets, I mean packets like minecraft) exist and so on
is it layer 3 idk I forgot all about it
lol good joke
lmfao
Man Slikey help us out
y'all are beyond the point where i can help ❤️
It's not actual HTTP3 in Hytale right? So does Nginx properly support the QUIC streams or is it untested lmao
Zero is typing
This is basically how the server implements QUIC just with a custom application protocol
https://github.com/netty/netty/blob/4.2/codec-native-quic/src/test/java/io/netty/handler/codec/quic/example/QuicServerExample.java
so if i was wrong about quic proxy support for nginx, write your own in netty
Yeah, it shouldn't be too hard to just patch Nginx though
custom Envoy config is probably easier (but I don't have much experience with either)
I am more of a guy to code a selfmade solution but contributing to nginx sounds more reasonable lmao
Sounds better for your resume too lol
viewing code on mobile oof
guess imma setup caddy l4 tomorrow since it should easily do raw udp stream proxy and iirc has a quic stream matcher
But so I assume the mentioned custom application protocol would interfere with proxies that assume HTTP/3 then. That sounds to me like nginx is off the board without changes
If it can do matching then you're golden, because that's the problem with a UDP proxy lol
We don't know yet, nobody does this stuff 💀
I'll try to set up a basic server & client based on that netty example and run some tests with different proxies over the xmas break
We are pioneers, bro, the networking scene will hail us as gods in the far future
More so the Hytale team but oh well
I don't want to be a networking pioneer 😭 😭
given the previous experience, this is 105 octane cope
everyone hating on network engineers lmao
Is that a car joke I don't understand? lmao
its HIGH octane cope, yes fossil fuel joke
if you start developing your own hytale proxy, you will end up stuck with a bungeecord like project ^^
But they are the basis of almost all we do 
As long as no one is forced to use it, I don't see the problem lmao
Everyone writing up their small little solutions and one or two becoming bigger is so nostalgic to me
not sure how nginx implements it, but we don't use http/3, its just using QUIC as a transport
Yeah we'll see. Maybe nginx does handle it well but didn't document it like that because nobody uses it outside of HTTP/3
Given that quic is encrypted, it would depend if nginx does TLS termination and then does inspection on the data inside of QUIC
Would it be too privy to ask for a small packet sample so we can testbed it? lmao
but also, I've used nginx to proxy minecraft before with a TCP proxy so you never know what is possible ¯_(ツ)_/¯
uh, not sure I have time to put together something useful enough for that atm sorry
absolutely no problem, just asking
If you take the nginx example and just throw random data in the stream that should be close enough
Time to feed it my beloved lorem ipsum
Hello world
Hello Huski!
Damn my code worked
I'm already messing with it so
nginx or something selfmade?
Nginx works fine with the UDP streams, as you'd expect
I'm about to check if it supports QUIC streams on its own
It's a bit of both, normal Nginx though
AI still says
nginx will only accept QUIC packets that negotiate HTTP/3 via ALPN (h3).
If you send:
a random UDP datagram
a syntactically valid QUIC packet
or a QUIC packet with a custom ALPNnginx will drop it silently.
no matter how I word it lmao
Stop asking AI for the love of god lol
yeah but I am on the phone and too lazy to walk to my pc lmao
Hi zero and slikey
Yeah Nginx doesn't handle QUIC streams directly
At least not the mainline
Best you can do with Nginx is use it as a basic reverse proxy for UDP streams, in order to get around publicly exposing ports
If you want to do load distribution through the proxy directly, you'll need another solution, assuming whoever said you need the headers is correct
You'd have to make use of the Connection IDs in the QUIC header to do proper load distribution rather than just forwarding, therefore yeah actual parsing
there are a few C++ libraries that parse QUIC tho
Lmao you could even write the proxy in Python
Python needs to burn (very objective statement yes)
Also it is very satisfying that the QUIC spec has the RFC number 9000
Animal cruelty
Nginx issues 783 and 146 both seem they'll be relevant for Hytale
Definitely do not pester them about it though lol
It looks like they used to support QUIC streams but dropped it at some point, for who knows why
maybe reducing bloat because no one used the feature back then
Maybe it was partially broken and nobody used it to begin with 🤣
Oh y'know what, the 4kb payload is likely in a header right? So you won't be able to use the UDP stream proxying
Not to match and connect people at least
So we will need our own dedicated QUIC proxy then
I suppose it doesn't matter where the payload is, we can't get it regardless LOL
Not unless we're decrypting and/or reading headers
You need direct QUIC support no matter what, otherwise the proxy is kind of pointless
smth like Velocity or Bungee?
they do? lmao
Yes 😭😭
They use hacks and imitation tactics to trick the game into making it work
@meager viper what you have to say about this
Modern Minecraft has transfer packets, but before we were doing dimension change hacks
And obviously it does various protocol hacks just for auth and all that
hunt showdown
If you look at the code for Velocity versus a normal proxy, you'll see the big difference
But the problem with the transfer packets are that we have to expose all ports or make subdomains with nginx or smth like that
ik that velocity und bungee are tricking the game
If you have a proper reverse proxy which can match by payload, you can just send them back to the proxy with the relevant payload
And route them accordingly
With for example nginx load balancing wouldn't be the problem with smth like an transfer packet just put some server behind an subdomain and do some nginx load balancing stuff but what about stuff like network wide commands
That's why transfer packets aren't a replacement for Velocity
yeah but the question is how are we gonna do it with hytale then?
Network wide commands would need to be handled by a plugin, not the proxy
On MC it could be a proxy plugin - i mean it would work if every server has the plugin but it would be a deployment nightmare
How is that a deployment nightmare, it's two symlinks 😭
what about a network of servers pn multiple data centers
I'm talking about smth like this
sure a docker swarm and shared volumes could do the job maybe but still it's not that optimal solution like a proxy plugin
And also keeping track of how mans players are on network or where each player on the network is (without a database) is also a topic
I assume the transfer packets work as long as the servers can communicate internally. If you have a complex server network setup, you'd have to have a good ingress setup accordingly
Internally or externally is not the big of a deal bc. Of nginx - but my point is that with a custom proxy we would have more flexibility, but if a proxy like velocity could work can we see when the game is out and the community is starting to crackdown all of the packets
What do you mean by "crackdown all of the packets"
I assume like, an understanding of them
^ exactly this ^
Understanding the packets will come quick I assume
I hope so 🙏
A custom proxy ofc is flexible, but there's also the issue of maintainability and starting to code it in the first place
If you keep the custom proxy simple, it shouldn't be too hard
And you can actually keep it simple when you have a transfer packet that supports a payload
Worst case is Zero gives us a seminar on what the protocol looks like lmao
depends on how hytale does multi world / multi dimension and how the login / join flow is going to be
i think
Zero?
Zero is a dev
okay 👍
You don't want to re-create Bungee, that's for sure
It doesn't matter how it does multi-world and everything, because that's not something you want to interfere with at all
ik and it was just an example
it depends all on how the transfer packet works basically
Some reverse proxy solution will be needed no matter what
reverse proxying is extremely easy nowadays now that we have claude/chatgpt
What do those have to do with reverse proxying 😭
cause there are many people who don't even know they gotta reverse proxy in the first place
Any off-the-shelf reverse proxy for QUIC will probably work
And people who don't know about reverse proxying can probably get away with not reverse proxying 💀
that's actually great - but still idk about network wide data and commands like player count smth like a /server command or so
I mean "getting away without reverse proxying" equates traversing the internet naked
they're public game servers 💀 the worst case is the public can use them
Yeah but for DDoS and stuff like that, knowing the actual IP is never good
thats true..... for that it would probably be good to use cloudflare as DNS
or a similiar service that provides domain wide DDOS-Protection
wouldnt that also need to sit in front of the server the same way a reverse proxy does
😔
Cloudflare -> Reverse Proxy (Nginx for example) -> Game Server
Or what do u mean?
You guys realise dns protect your server in no way possible. You can just find the actual server ip
And how if the actual server ip is not published for the domain ur using.....
Yeah but doesn't the same QUIC problem arise? And Cloudflare requires like an Enterprise license for Spectrum to support custom protocols like that
What?
Cloudflare for example have a server infront of ur and is basically proxying all trafic to the origin server
uhhh that's actually a good point i didn't tougth of
we're all doomed.

Like 1% of game servers are targets for 99% of DDoS attacks, I don't think you really need to worry about them lmfao
unless an another server owner is jealous of your success - not that this happend on any minecraft server before....
Anyone that successful is going to have the resources for DDoS protection anyway
And server who are profitable could aldo buy cloudflare enterprise or smth like that
I am just gonna pursue the path of a custom reverse proxy
not too hard innit
just spent like half an hour making a Dockerfile for nginx with quic just to confirm what I already knew
For CloudFlare Spectrum?
If you mean the server jar, it will be on Early access launch.
If you mean the official Hytale server network, it sounds like that won't be released for a bit.
I see. Thanks a lot.
Wait, really? I thought the official Hytale server network would come out with EA
I think they don't want to have a server day 1 to encourage others to make community servers, and not compete with them since they would have a head start.
Also the team is much smaller than it was with Riot, still a lot, but probably not enough to work on the core engine/server, exploration mode, and a server on top of that. Simon mentioned expanding the team after release
50 people is a lot, that's generally 6-7 teams at most tech companies working on 6-7 different things
Either way I am telling you that they are clearly focused on releasing with modding tools and an exploration mode for early access and I wouldn't be expecting an official server network on EA release
Also from the modding blogpost:
We plan to launch a first-party server network, operated by an internal team, that offers a selection of classic Hypixel Network-style minigames after launch but work has not started on this yet.
They haven't even gotten started on it yet and they may even cancel/refuse to do Hytale Skyblock as it risks destablizing everything
Destabilize everything as in they wont be able to focus on other more important things if they focus on hytale skyblock?
Oh they have enough. They can pump out work. It may just be slower since they have to develop both sides and an engine.
The engine is the heavy hitter
They risk splitting their player base between both games
I reckon providers like tcpshield will support it
They let you opt into the Cloudflare network if you have the pro or premium plan too it seems
🤔
The conversation is basically over, but I did find the patch that removed QUIC stream support from Nginx
So I'll be messing with that later probably
You can find it pretty easily by searching for rev 113e2438dbd4
There is also some mailing list stuff, but that's not as easy to link 💀 but here's the main stuff:
While QUIC in Stream has been a handy tool for testing QUIC implementation in
its early days, the truth is, we don't see many application-level protocols
other that HTTP/3, that work over QUIC.One such protocol is DNS-over-QUIC (DoQ) [3]. If you try to make it work over
a generic QUIC proxy in Stream, you'll quickly realize that DoQ uses DNS/UDP
packet format, rather DNS/TCP, so it cannot be proxied to a TCP backend.
As a result, DoQ support would require a separate module for dealing with DNS
packet prefix.HTTP/3 cannot be proxied by a generic QUIC -> TCP proxy as well.
Considering the above, our current plan is to remove QUIC support from Stream
before the merge. In future we may bring it back depending on availability of
application-level protocols that work over QUIC.
Because we'd just be doing QUIC → QUIC, what they had might work fine for us
☕
Oh Andre got a cooler tag now. The "server provider" tag
What are you doing here MiniDigger
what happened with the dyescape my friend @lunar lance
server jar release?
Jan 13th
Is there a site that shares Hytale plugins?
dyescape? lol
I haven't been involved with that in a long long time, back when I took on more responsibilities in the papermc team as part of the leadership team ^^
I understand, I haven't been following the community for very long 🤣
paper my goat
theres atleast any documentation on how to make server-plugins? or they will wait the game release to publish it?
HAProxy doesn't seem to be able to handle QUIC packets with a custom protocol instead of HTTP/3, the same problem as with nginx
mmmh, I see, so I guess you need to go down a few layers, that sucks
Wait so nginx won't work with Hytale?
Question:
If hytale makes a breaking protocol change. Would the community be notified beforehand through snapshots to be sure to fix this before the actual launch? As it might break some server clients or plugins/mods that don't utilize the default server client or do something so crazy
maybe one of the rust fanboys can be useful for once and make a simple reverse proxy specifically for hytale
There'll always be a week-ahead pre-release so that modders can prepare for breaking changes
Not as it currently stands. There was a state of it (as described above by shelbie) that did somewhat support it but they scrapped it because it wasn't useful. However it could be expected someone contributes to nginx to bring it back
what you cant do it in nginx??
do we even have a widely used reverse proxy that supports QUIC streams today
like from the get go without having to mess around with special compile options, external patches etc.
Traefik has something experimental but I'm gonna assume it's prolly only HTTP/3
Unless we understand the way transfer packets work completely wrong, this seems like a huge problem for server networks
yeahhh
I wouldn't even be able to host my server on my usual setup at all if theres no reverse proxy
Like one idea that comes to my mind is if the transfer packets actually work in a way where you have a lobby with public facing IP address and then any subsequent servers are with private IP address and the moment you want to join one of those private servers, the lobby with public facing IP address becomes the proxy for you
From the get go only a few. The custom compile option is often necessary because QUIC needs a custom TLS interface that the common libraries cannot implement, which is why you need to link a specific TLS library that supports QUIC
Isn't that basically just how Bungeecord works?
If you just need to do a simple pass through, nginx can do it. It just can't do anything protocol-aware like load balancing
nope, bungeecord it self is only proxy, whereas what I'm thinking about is that the server could act both as a place to play and a proxy at the same time
no like
Ah like that, but that wouldn't work for large scale servers either because the server would be overloaded
apparently nginx dropped the support for proxying QUIC streams
nginx seems to always terminate at the application layer so it drops non-HTTP/3 packets silently no matter what you do. Atleast that seems to be the case with the testing we did yesterday
it depends... you would probably need regional based lobbies that would then act like proxies later
do we have any solid candidate for a reverse proxy (i dont care if it requires manual compiling)
or none at all
you don't do it with the http module, just the basic stream module. it just forwards the udp packets to the backend without even realizing it's quic
Well apparently no one (publicly) ever considered QUIC outside of HTTP/3 or DoQ soo I guess not. A custom made proxy is thinkable tho
i feel like this should be doable
That would mess with path validation would it not
hmmm this is really annoying
but how would the proxy know where to forward if the endpoint changes when the player hops between different servers?
I started a custom reverse proxy but I am not the best C++ coder and couldn't be bothered to do it in any other language. Let's see what I can do (don't expect much)
Maybe I can switch to rust... mehh
my friend provides me a really good machine to run servers on for 24/7 but it can't directly do port forwarding due to ISP limitatons
It's 1:1 forwarding, no routing logic
so I need to link it to an external gateway server using VPN like WireGuard and have a reverse proxy on the gateway
so if theres no QUIC compatible reverse proxy solution I wouldn't be able to run my Hytale server at all
hmmm... that doesn't seem like it helps that much
at that point the proxy is essentially useless in a way
people are probably going to take apart the way Hytale server does it and then implement their own... it would mean it would be in Java but it would be a proxy...
Yeah maybe I should just use netty like Hytale but I really wanna do it like cool yk
and we still got some time till release so its easily feasible
EY!!! We have voxels "stamping" 😄 Pasting imported models. 😄 - This is pretty cool!
The issue with proxying quic is that you need to do it at the application level, so you need custom hytale protocol code
Netty is well understood in the community, porting all the learnings from velocity into a hytale project seems easy enough once we have access to hytales code
I guess I wouldn't be able to host a Hytale server on day one then 😢
unless a proper proxy is made which could take months
You can terminate at Level 4, its just not as flexible but should work
I do want to try if L4 works
that would be a temporary solution until an actual hytale specific proxy gets released
I only need to route packets to a single backend server so it shouldn't be too difficult
I mean idk if most even need a Hytale specific proxy. A L4-L7-proxy can easily be prepared too already, just provide a protocol-agnostic API for layer 7 and implement it later while it fall backs to L4 termination
github(.)com/junkurihara/rust-rpxy-l4 seems to be able to forward QUIC streams btw
ohh sounds fun
even has SNI-based routing and doesn't restrict to ALPN-based routing
actually I wanna try that
is the api coming out before the game?
no
only some people received something before release, but for main audience everything will be released only on January 13
API even won't have documentation afaik
not much atleast
it also can't really route based on transfer packet payload
depending on how it's implemented, you don't need anything hytale specific at all
it's literally 1 nginx patch 🙈 it's not that annoying
junkurihara/rust-rpxy-l4 (github) seems interesting though
like this isn't as mainstream as nginx but i feel like its better than having to maintain an unsupported patch
when was the last commit for it?
yesterday
yeah okay i'll probably look at it too
for my hytale server i want to make it as easy to maintain as possible
im already struggling with keeping my minecraft server up to date with all sorts of custom infrastructure
minecraft is basically impossible to keep up to date
it's extremely high maintenance
yeah
even a custom nginx patch isn't going to be any effort to maintain
you can just ignore updates on it and stick to longterm stable releases
the worst part for me is that i also have to maintain discord integration things on top of all that
dont know why i made the decision to do so but
discord hasn't broken spec in literal years
id like to have a simple yet stable vanilla-focused server for hytale
minecraft breaks it every 14 minutes on purpose
it's literally so unmaintainable that every server has protocol translation embedded in it lol
and a bunch of clients do the same thing too
fortunately the server competition seems very hopeful in my country
there are only 2 discord servers (including mine) about hytale and i only found like 1 or 2 people planning to start a dedicated server on day one
i've gathered 50 people on my discord and it seems to be the largest public one around here
Why is it a competition
it's not even out yet, why would you have competition lol
lol competition might be a odd choice of word but im tired with whatever minecraft is today
keeping a minecraft server itself is a very high maintenance thing as we talked
and on top of that i would need to add loads of custom features to even get a minimum amount of players nowadays
in hytale i just want a nice place to enjoy this fresh new game with everyone
so i just tested caddy with the l4 plugin and the quic matcher works outside of http frames and supports sni matching as well
It is, the dedication is not even worth it
at least my minecraft server does have like 3 or 4 players constantly playing today but the server is kinda ruined with all sorts of efficiency focused farms and its very intimidating for new players to join the community
There was a LUCKY time where if you had a server you could make money, but just like everything nowadays, the bubble is popped
Investing money into a mc server in hopes of getting a return is the silliest thing you could possibly do
Hytale on the other hand is different because we will have a server browser, so finding a base won't be as hard (also official tools that supports creators)
im not looking for getting a return and the server is running off of "free resource" that my friend provides me 🥴
but still it failed to be the place where you could just enjoy the game with people
welp i guess i cant post the example configs i made for caddy thanks to some automod
That sucks, I hope hytale provides you joy. Considering adding custom features won't require 200IQ
tbh the latter part is also up to how well i shape the community but i think large number of players who join a minecraft server today are people who have lots of extremely niche knowledge about the game
idk if you read my message but caddy + the layer4 plugin works
For me, no server is enjoyable anymore. Everything is pretty limiting resulting into having the same stuff over and over again
a "new player friendly" server wouldn't work in minecraft today
i really hope things will be different on hytale at least for a good while
everyone has a fresh start + it has a built in server browser
The most important is to create something that YOU would play
actually nice cause i run caddy anyway
when hypixel was released in 2013, they were providing unique minigames they themselves would play
so for me the whole quic proxy and loadbalancing is easily solved then
what do you use to test quic server/client?
the way i tested it is just building the examples linked yesterday by zero with the app protocol set to custom instead of http/0.9 and then listening to port 8000 on the server but connecting to 9999 with the client. build the 2 jars and then its easily testable.
if http snuck in there idk where it would have
Can you link me the examples 😅? I wanna try something myself
this example was linked
besides the class name, app protocol and port i changed nothing
i could probably whip up a simple QUIC server & client in python and test various reverse proxy options but
if anyone has a good testing server/client let me know
i didnt do anything outside of the example as i wouldnt know if python/node/c# or whatnot dont just do http frames under the hood
as zero said they used the example to build the stack on a custom app protocol i used the same examples to be sure it should work the same
oh one more change actually. i replaced the GET / in client and server with random strings (the same ofc) but just to avoid this causing some http detection in caddy
tomorrow (if i dont procrastinate) i will be testing rust-rpxy-l4 with a python aioquic client/server
the only thing i didnt test yet is load balancing the quic streams
QUIC seems really promising except the fact that there are not a lot of software support yet
ok the included load balancing in caddy layer4 also works as expected
actually will hytale also support SRV records?
I think they will... I already wanted to ask this but I think they will add this after some update if not on start
Currently no because C# doesn't have an API to do this. So we would need to either implement dns, use a library that implements dns or manually do P/invoke to system functions, or something like that.
Its just a bit more messy than it should be and requires proper attention and we dont really have time for it atm
so planned for future just not right now
I think using library that implements DNS is the easiest thing
I wonder if we can get answer on if Hytale client is able to display non-ASCII characters like at all (e.g. chatting in foreign languages & decorating server messages)
I think yes...
As I saw on their YouTube video displaying creative mode they use some standard font for chat messages and it will be very strange if they don't use UTF8
They could still be prerendered textures though, Minecraft bedrock literally does that for the built-in Noto Sans font and its horrible
If I chat in my language and it ends up looking like ������ I would be so disappointed
hieroglyphs?
or just non-english alphabet
It's totally fine for a game to not bundle every single unicode font but it should fall back to system font if a certain character is missing
I don't know if they'll be doing another Q&A before release but this is a very critical question for non-English players & content creators
I assume all the server info will come out sometime after release or are we getting lucky and having on release/before?
Hosting guide is planned before release, plugin docs on release (though they will be sparse at the start)
Server source code some time after release
I'm going to be testing it anyway, but if you really want redundancy you could make one lol
I threw one together yesterday and I'm not home right now
I plan on just patching my existing nginx setup and using that alongside all my other stuff
Do you already have a tutorial ready on how to open a dedicated server?
A server hosting guide is planned to be published before early access release
All we have for now is the modding blog post and a couple tweets ^^
You can prepare JRE-25
ye im preparing my debian VM with docker and such
you have a dedicated machine for it but you're still using docker?
yeah this way itll be easier to switch things over to something else once im done playing around
like lets be real, theres no way im getting anything monetary out of it due to sanctions, so itll last as long as my passion lasts
also easier backups
fair enough, i also containerize all my stuff for portability reasons
maybe ill rent it out to someone, but i gotta figure out proper security for that first
doubt
but ill consider it
i just hope its less annoying to setup compared to the pterodactyl's mess
(theres no way im touching pterodactyl ever again, screw those guys)
Multicraft is also usable since they were bought by Nitrado
Bet it'll be just as easy to run Hytale on that
im gonna try with portainer access control stuff first
i mean, doesnt need that much, ftp for file upload/download, logs, console
Whats wrong with it?
no lol
you can just use normal unix permissions if you really wanted to for that
many things really.
extremely toxic support being the main one lol
the guide for using it on top of docker is lacking at best and factually wasnt working as is
what are the actual benefits of pterodactyl? lol
it just sounds like an extra dependency for no real reason 🙈
same as pelican
its an admin panel with access control
and they bake in political messages into their product which is never welcome lol
I used argocd when I had devops responsibilities and yea i was looking for something similar
Is portanier open source? Havent heard about it
im not sure if it is
they have community edition and a github repo
which is what i use, because i dont pay for software
i just use podman to inspect resources and attach to the console 💀
User/Permission management, File manager via Browser, Scheduled tasks/backups, database separation, management of multiple physical servers
my reason for choosing portainer is simple really.
once upon a time a kind soul was sharing with me some server space for my hobby projects for university, and they were using portainer for that
so when i was setting up my own hardware i looked back at it and decided to stick with what works
I should do that...
I'm happily using Docker without knowing those acronyms ^^
both!
are you using like bare debian or something for your server?
this question really makes more sense for hypervisors like proxmox
if you run docker directly on proxmox, you really shouldnt💀
LXC is kind of that. However Docker is containerized this actually has a use for it!
I'd guess for our use case VM might be a better choice due to isolation
Mostly due to security
the current stack for me looks like this:
[jre]->docker->debian(VM)->proxmox->[hardware]
Depends! Docker is secure! Discord uses bare metal and docker for their services. 😄
could also be [jre]->debian->hardware with same result
You can run Debian in the JRE?
Ooh I see. Your right.
Was gonna say!
Yep, Debian on bare metal. Didn't have a need to look into virtualization yet. Makes sense, ty
just passing by to say happy holidays to those that celebrate!
you too
if you celebrate
Sorry it took me so long to get back to this!
If you’re new, I’d recommend learning the basics of Java first to give you a nice foundation. Then you can start with your first simple plugin.
As for ideas, I don’t have a specific recommendation, but I think you should try to make anything that requires an admin to create.
An example could be a tag system, where an admin can create and manage multiple tags. This naturally introduces object-oriented programming (OOP) concepts—look into OOP it’ll be important!
Also one last tip, if you’re new, literally do not use ‘static’ ever. Not because there’s no use for it, but because it may build bad habits and act as a workaround.
Yall think we can convert blocks to entities, like those create mods?
And do nearly anything we want with collisions and such? Or will blocks be able to have all entity support functionality?
I mean we shouldn't be as limited right?
Thats the goal, able to rewrite the entire game basically?
They said, that instead of redstone there's gonna be a create-esque system in hytale. So I expect something like that to be possible.
Yooooo thats great!
I presume kotlin is supported because it uses jvm
Yeah, Kotlin has full Java interoperability
.....
I know you IRL bro
we went to college together
Is anyone already planning on making a full decompile and documentation of server software when it comes out?
I have someone who is a part of my community who told me he is planning to rewrite the server in C#. Obviously he needs to get the protocol down first.
Why C#?
For the client?
his argument is that it will be more performant, and he is just good at it
I doubt this, but a very expansive system at least. - Issue with a platform is it has constraints and opinions. I would expect more from Minecraft but still so decent limitations.
? yeah but why should sb want to mach it to the client language? like what is the benefit or just for fun and he knows c#
yeah ok I see
Performance and hardware ties I would imagine.
C# is a very well dominant language for games and clients
This is not a bash on Java! - It is purely statistics and libraries of maturity.
there are a lot of projects like this for Miencraft already, where someone rewrites the server or the client from scratch, usually it is a nice small open source project, the main benefit is along the way, you learn how the server works, and then you can make nice tooling
exactly
Yeah I see, just wanted to ask why C# xd
if I personally had free time myself I would do it in C++ or Rust, then that would actually be beneficial to some extent
Yeah I also thought if sb wants to rewrite using sth completely else, thats why I asked
Also one last tip, if you’re new, literally do not use ‘static’ ever. Not because there’s no use for it, but because it may build bad habits and act as a workaround.
public class Main extends JavaPlugin {
public static Main plugin;
// this section contains about 1000 lines of code: listeners, managers, commands, maps, maybe even cookies
@Override
public void onEnable() {
Main.plugin = this;
// this section is 1000 lines of code, but *new*! (you create objects here, get it? haha)
}
}
Beginners code in a nutshell 🤪
Their team already new Java from Minecraft and the Client team already understood C# - This really is why as it is stated in their blog. However I also think it is a perfect balance for a small team as it is productive and performant.
I disagree man. Don't "Skip" use of something because people fail to learn proper use. Learn its use PROPERLLY
Statics have great use! Just use them where they make sense - Singletons are a terrible substitute as they have ENTIRLY different purposes and positions during an application
😮 I remember you!
haha we were in the same group
omg no singleton pattern
- But I think with the tip of not over using it, he is right
(lol now u also mentioned singleton xd)
I just showed an example of how using static in the beggining looks like (most of the time)
And probably that's why OP said that they should avoid it
But I agree with you - use it, but only when it makes sense
Lol! Sorry. 😄
Yeah Singletons are great for stateful runtime situations like managers.
Statics are great for creating things (Like a blueprint) you SHOULD NOT use a static to manage (This simply cannot work), and you SHOULD NOT use a singleton as a blueprint.
That’s a fair argument, but I still think that as a beginner, avoiding things you don’t need yet can actually be better.
Statics are one of those features that work against learning the core ideas at first. They blur the lines and confused me so much at first, and beginners often reach for static as a shortcut instead of understanding objects, initialization, constructors, and instances.
When you’re still learning what an object even is, statics can add unnecessary load and lead to bad patterns (“Java is just functions with globals”). In my opinion, it may work better to delay statics until the basics click, then introduce them with intent rather than as a crutch.
what a coincidence, i was also thinking of doing just that
ill probably try and do it on my own first though
you know it is not that easy especially at the beginning, the protocol is not known now, what should happen is people like you and him team up and get some more people and start a protocol reverse engineering project
If youre going to write the server in rust, maybe make it a community project (i could help you with rust)
Hiding tools doesn't help, it just delays the confusion. - The main issue is people are not learning the fundamentals, memory in concept is important, you don't need to learn the understanding of objects, initialization, constructors, and instances. As you should know how these work in concept. - This is how I think people should learn, it leads to much higher reinforcement! Such as statics don't exist in the heap or stack, they are a fundamental building block, they are non existant in the "runtime" its free performance, it means in C# at least its zero GC pressure too! - It is also quite simple. If it doesn't need to come and go nor hold a state it can be static - It is just a utility. (This reminds me of people learning pointers, it is just either not explained or terribly explained and causes confusion)
I work in games at least so this stuff is quite important, but likely not as important when working with mods, or other areas where performance isn't as critical.
Does anyone know if there was an event system shown anywhere? or what it looks like?
thanks ill do it;
There has to be one. Its likely going to be like almost any other pub/sub event pattern.
(Doesn't have to be one, but 99% chance there is)
Just thinking if it will look like minecraft listeners or whatever
Most are the same just different words.
You can create event types - Publish that event (trigger), then others can subscribe to that event. - Unsure about bukkit like where you have prioirty, cancellation, reflection discovery, etc. But you will at least have the basics
I was the king of static abusing
I literally got banned of a developer server because I made every single variable static
Talking about 10+ years ago
actually, this code isn't that extreme
but it can be easly 'fixed' - make every one of those 1000 lines static - no need for a singleton!
And actually, to make it more readable, move that to another class, maybe Variables? Or Utils? That's what Java is about - multiple classes - right? (/s)
That argument makes sense from an experienced, performance-focused perspective, but I don’t think it works well for beginners—especially in Java.
I agree that hiding tools forever is bad, but timing matters. Beginners aren’t avoiding fundamentals by avoiding static; they’re avoiding multiple abstractions at once. In Java, static changes how lifetime, ownership, initialization, and access all work. That’s a lot to layer on before someone even understands what an object is.
Saying “you don’t need to understand objects, constructors, and instances, just the concept” is kind of the problem. For beginners, those aren’t just concepts yet—they’re things they’re actively trying to build intuition for. Introducing static early blurs that intuition because it behaves differently from everything else they’re learning.
In fact, teaching my friend how to create a constructor was so confusing to them. They didn't understand what passing something into the constructor was doing until really explained
Beginners learning OOP is what I think the problem is. There is already a lot going on Static is likely one of the most straight forward concepts. 😄 - (I hate OOP) 😄 I think it is great for teams! But not required or wanted for most projects
That's just wrong. Not trying to be rude, but
If you don’t like OOP, that’s fine but Java is designed around it. Beginners aren’t choosing that, they’re learning the language they’re using. Skipping OOP fundamentals in Java just sets them up to be confused later.
Static isn’t “straightforward” for beginners in Java, it breaks their understanding of OOP, which they’re still forming.
Static is simpler once you already understand OOP, not before.
I think I did something like that (but way smaller) for my very first plugin, when I had to rush it because Skript (yeah, that Skript) had a bug with recognizing ItemMeta or something like that
No prior Java experience other than public static void main(String[] args) { System.out.println("Hello World!"); }
Rushed that plugin in one night
It was terrible
But it worked!
Java forces you to learn OOP, you can't just ignore it
After learning fundamentials, the next thing you have to learn in Java is OOP
And yes, you can go overboard ("enterprise aesthetic ✨"), but at its core OOP is very simple
I know, I don't work with Java for that reason. I work with C# at work in OOP but procedural for personal. Just not a model I enjoy.
Yeah a lot of people don't like OOP. But a lot love it, including me
Oh absolutely! I find composition without inheritance much more free. Developing systems without having to require a hiararchy for me is quite nice! But I know many who love it, but I also know many who hate it. 😄 For me it is harder to scope down with inheretance butr that is just how I mentally work with things.
Composition over inheritance is still an OOP model and can be much better depeneding on your usecase
Not necessarily - Think ECS, you can have an ECS with inheritance, but you can void it all together, DOTS for Unity is a good example here. - Composition without the inheritance is strictly not OOP.
You're right, it's not fair for my to label composition over inheritance being a strictly OOP model but it's still can be 100% OOP model. Inheritance isn't a rule of OOP it's just one of the four pillars. If it's not there, it doesn't mean no more OOP. That's a common confusion though
You might still be sticking to OOP and you don't even know it
Also, ECS (including Unity DOTS) is an architecture, not a programming paradigm. You can implement ECS in an OO language using OOP, or in a data-oriented way that deliberately avoids OOP — those are different choices.
Correct! ECS is an architecture, but ECS fights against OOP fundamentally. - I am not arguing against OOP in general, but I am stating that I believe it is a harder model to understand in general.
why is composition without inheritance not oop?
I think people just commonly confuse that
Your right, I meant encapsulation. Inhertiance is composition. But it isn't the composition I am talking about
Inheritance is not composition
I agree it’s harder. But “harder” doesn’t mean “don’t learn it.” One reason It’s hard is because it forces you to think about design, but just because something is hard, it doesn't mean don't learn it. But at the same time, you can intentionally separate your learning into chunks so you're not overloaded, and specifically I said save static for later because it will throw off all your OOP learning IMO
Yes it is. I can call an entity a player or I can have player inherit from entity. Two compositional ways one knows about its self the other is defined by the two.
No, inheritance is like:
A cow is an animal
Composition is:
A cow has a belly
Both are composition...
Inheritance literally states
Animal:
- Animals have bellies
Cow: - has udders
Data Driven Composition is:
I am creating a cow:
- Is an animal
- Has a belly
- Has udders
^ One doesn't inherit but is defined to be so.
Same outcome different way to compose.
So you're saying an animal is a belly?
I also didnt got that

Lmao! Yeah! 😄
Changed to read better.
🍿
No but I just said earlier Inheritance doesn't specify animals have bellies, it's IS A not HAS A. Remember the cow example?
I think this discussion can be very long - but maybe to not to drift away from the topic and focusing on small stuff:
if sb wants to code hytale plugins/mods, learn Java by using basic OOP concepts and apply them by creating Minecraft plugins since there will prop. the same concepts, right? And the most important thing is to just do sth and learn from your mistakes
I cannot explain this any clearer than it has been. - The fundamental difference is cow is not defined by inheriting from "Animal" it is a word defined by other words. I could state alien and cow is now an alien, but I don't have to reclassify cow to do that because cow doesn't inherit it is not set in stone.
class Cow : Animal { }
// Cow is forever an Animal
// Want Cow to be Alien? Rewrite the class.
// Recompile. Redeploy. It's structural.
entity.Add<AnimalTag>(); // It's an animal now
entity.Remove<AnimalTag>();
entity.Add<AlienTag>(); // Now it's an alien
// Nothing changed except my decision
You can do the same thing in oop with object components no?
You were saying "Inheritance and Composition are the same" and now you're proving that they're not the same. And you CAN still do composition with OOP
But it doesn't make it an animal or an alien logically, it just means it has an animal or an alient tag
I literally said you can. 😄 - I said I don't like it.
I think you're confusing yourself, I'm not sure what you're trying to argue
I don't like oop, I like data oriented.
Okay, but that's not the same as "I don't like Inheritance, I like composition"
you can still do
public class Cow {
private final List<Tags> tags;
}
and give a cow any tag you want
Think ECS, you can have an ECS with inheritance, but you can void it all together, DOTS for Unity is a good example here. - Composition without the inheritance is strictly not OOP.
This is literally stating the difference. - DOTS "Data Oriented Tech Stack" - Composition without the inheritance
That's not true though, you don't have to have inheritance in OOP
It's not a rule, it's a guideline
How would you have multiple composition with oop inheritance
Like a player has an inventory, model, input mapping etc
Are you asking because you don't understand how?
I’m asking because I disagree that inheritance is the same as composition
There's no agree or disagree, they are just different concepts. It's not an opinion
I thought niklas was saying they’re the same
He was, I was trying to explain that they are different
Ye same direction I was going
I see, okay
Are you saying when you inherit you are not composing? (I think I am confused now. :'D)
uff
The language you're using is confusing, it feels like a trap. I am saying Inheritance is not Composition and the concepts are different completely. Inheritance: IS A, Composition: HAS A
Another question: Are some of you planning or already coding a hytale network? Meaning not just 1 server.
If so, what technologies are you using? Would be interesting to know
I mean to orchestrate the servers, saving player data etc
kind of
I was about to say, it would be nice if server transferring was built into hytale
we had a discussing i think yesterday - if we want to scale game servers based on player count/load and dont know the port yet (and dont want to open a range in the firewall) maybe we need sth
That article compares two OOP patterns. I'm not arguing OOP inheritance vs OOP composition. I'm arguing OOP vs data-oriented. In data-oriented, there's no 'is-a' OR 'has-a' with smart objects. There's just data, and external systems that operate on it. That article doesn't touch what I'm talking about. - We are two different conversations, one is data orient design (This is fundamentally not OOP) It is a restructure of thinking, they don't relate but the architectures work such as composition
The issue was that here u said "inheritance is composition" - thats why @summer sapphireand we send those messages
Because it is! When class B inherits class A where does Class A's data go? Into B, A is composed into B
ok. In the world of OOP you have both concepts meaning sth different, explained by the article
Okay, now I likely don't know then. Are they two different concepts but mechanically the same?
Okay, I educated my self. Mechanically it is the exact same.
onces can argue its "the same", I know what you mean with your statement. However its not the same xd
As OG_Ali explained:
class Car {
Engine engine;
List<Wheel> wheels;
...
}
Here, we are composing multiple objects into each other.
Now we want more abstraction and re-usuability:
// Abstract Engine
abstract class Engine {
abstract void start();
}
// Concrete Engines
class ElectricEngine extends Engine {
void start() { System.out.println("Electric engine starting"); }
}
class CombustionEngine extends Engine {
void start() { System.out.println("Combustion engine starting"); }
}
// Abstract Car
abstract class Car {
Engine engine;
Car(Engine engine) { this.engine = engine; }
abstract void drive();
}
// Concrete Cars
class ElectricCar extends Car {
ElectricCar(ElectricEngine engine) { super(engine); }
void drive() { System.out.println("Driving electric car"); }
}
class CombustionCar extends Car {
CombustionCar(CombustionEngine engine) { super(engine); }
void drive() { System.out.println("Driving combustion car"); }
}
// Usage
void main(){
Car tesla = new ElectricCar(new ElectricEngine());
Car ford = new CombustionCar(new CombustionEngine());
tesla.engine.start();
tesla.drive();
ford.engine.start();
ford.drive();
}
Here, we can use inheritance
if u think about that in a "data way" - you could say we are composing different engines in a car. But I think the difference is clear
struct Car { public int EngineId; }
void StartEngineSystem(ref Engine e)
{
e.Running = true;
}
void DriveSystem(ref Car c, ref Engine e)
{
if (e.Running) { /* move */ }
}```
This is the way I am talking about, they are just fundamentally different. - One doesn't know about the other.
Tbh I can see why newbies dont want todo this
yes
They dont see the effect in the longrun
Imagine simulating some traffic with different type of vehicles. electric cars, combustion cars, motor bikes etc
How would you simulate the driving? all vehicles drive differenly.
Why would u do it like this instead of using inheritance? just curious, maybe to learn some new way of thinking
This is the benefit of ECS and why it is highly performant.
Isntead of each object controlling themselvs you have a general orchestrator that tells each system to iterate.
ALL Engines turn on! or "Selected Engines Turn ON!"
They have no idea they are a car, they are just pieces that control individually.
Does not apply ONLY to ECS (Just a good way to explain it)
If I want to now add multi engine cars that would break your abstraction but is easier under ECS
Centralized knowledge, runtime flexibility, data doesn't know its self I define it.
I don't have to go through hierarchies. They are all the same.
Everything is just data. Systems give it meaning. You're the orchestrator.
you could do List<Engines> as a attribute to the abstract car or have a Hybrid engine class
I see the point with centralized knowledge meaning that i dont have to swich files for changing the drive() implementation or sth.
runtime flexibility - OOP has polymorphism
...
So yeah I think for performance reasons it is better but for coding experience as well?
Experience is up to the person, I personally enjoy it more. But it does get harder the bigger the team or the bigger the project.
If I want to make a cow, it is easier to just inherit what was already defined and has behaviours while it is harder to figure out what all I need to define the said animal.
This would break all existing implementations that rely on cars having one engine
why?
tesla.engine.start
yeah of cause also do
tesla.engines.for(e->e.start)
You should be doing getEngine() so that changing implementation does not break pre existing systems
You would just change the implementation of the function and everything would still work
This is a bad abstraction for cars that only have one engine. A list implies possibly more.
yeah yeah Its not good code it was to demonstrate the difference between composition and inheritance
get engine suggests all cars have a single engine
Yeah that's true
You'd need to have a 2nd getEngine() with a parameter for a specific engine
abstract class Car {
abstract Engine getEngine();
abstract void startCar();
}
class SingleEngineCar extends Car {
private Engine engine;
public Engine getEngine() { return engine; }
public void startCar() { engine.start(); }
}
class MultiEngineCar extends Car {
private List<Engine> engines;
public Engine getEngine() { return engines[0]; }
public Engine getEngine(int index) { return engines.get(index); }
public void startCar() { engines.forEach(Engine::start); }
}
ah wait
I think the benefit of ECS is it allows for more unexpected extensions than inheritance without class explosion
I think composition should be used as much as possible over inheritance. Inheritance should be saved for specific situations where it would work well.
Yeah so it depends like always on the usecase right? i dont do any unity stuff and more backend/fullstack where its nice and I dont get class explosion
Yes, at the heart of ECS without performance in consideration the ability to compose and nothing knows about any other system, they just do their jobs. (Again you can make an ECS against this will, but it loses that benefit)
You should join our gaming community, we do a lot of stuff with vehicles usually in our servers and we'll be building a number of other mods. Would love to build with people with similar interests
I am going to put this in here. - If anyone hasn't tried AI Fill in the Middle - It is lovely. 😄 (First time today, and wowsers!) - Watch me hate it in a few days after I say this - I am self hosting Tabby local machine as well why would I put in on my server? 😄 But it is essentially Copilot or SuperMaven.
will there be a guide to make plugins/mods?
is there any info about how we can host servers?
There will be modding documentation, but it will be pretty sparse for the start. But you can expect community guides to pop out pretty quickly.
The server hosting guide will be released closer to launch but the jist of it is that it'll use Java 25 and QUIC (UDP)
java -jar HytaleServer.jar
Is there currently a website where plugins can be shared?
The MVP we have will be out very soon (within a week or less probably).
There will not be an official one on launch but Hytale partnered with CurseForge which are likely to be there on day one.
Wait hold up... since we can't use any proxies out there... will I have to deal with SSL certificates on my own?
Oh that was just an example but thanks for the offer 😂👍
I’m more interested in backend and software architecture etc so I and some friends already have a project
Uhh, you talking about the client connecting to the server or an external proxy?
client connecting to a proxy server that forwards it to the correct Hytale server
Only if it’s a TLS terminating proxy, I am pretty sure it will just be UDP
the thing is, the proxy will need to know where to forward the connection, which Hytale server specifically if there are going to be multiple.
What exactly are you going to use a proxy for when in hytale you don’t have to tunnel through one?
Sorry was messaging a friend, more active in here now
You don't? Afaik the transfer packets only work as long as all servers that you as a player are trying to connect to have public facing IP address
Haven’t looked too much into that part. Perhaps I need to google a bit more.
I honestly don’t think we will have to worry about certificates at all
if you're going to be running just one single instance of a Hytale server then most likely not... however if you're going to be running multiple instances of a Hytale server then it really depends on how the transfer packets work
I have no idea how the transfer packets actually work but I had one idea ⬆️
The instruction to transfer is delivered over your existing connection which would be QUIC over UDP no?
Another thing to consider is what type of network your are setting up. A more open network where you can join from anywhere, aka multiple servers that can be connected to from multiple places or a more controlled network by joining via a lobby or having a couple of servers as kind of that first connection point
if that's how it works then the client would be the one connecting to the new server meaning that server needs to have a public facing IP address
I would rather prefer the controlled network but that currently doesn't seem to be easily achievable
Yes definitely
Now that I have done a bit of research
I am planning on creating a server orchestrator as I have mentioned many times which is going to be interesting. I don’t just want to use kubernetes but have a custom setup
Will need it for matchmaking etc
You could refer to a proxy, but that proxy would need to know where to forward that traffic, probably based on SNI field or simply the port
but I would also prefer to prevent players from joining other my servers without joining the lobby first
Well in the non-lobby servers you can still check if the connection has a valid payload from a transfer packet, and thereby declining direct connections. I guess that's the most straightforward solution
ooh, there is going to be information whether it's a direct connection or a transfer connection?
I'd recommend to look at integrating against Agones first before building your own orchestrator.
Well if it's a direct connection you don't have that 4KB payload that you can present
what 4kB payload? It seems like I missed that part of the past conversation
Transfer packet includes a payload of up to 4KB that the client takes and presents to the server it is being referred to on connect.
E.g. you could theoretically use that to encode the player's current inventory (+a signature)
Ill look into them
Oh it’s made by google?
📝 📝 📝
Let’s see how much Lorem ipsum we need to write to reach the threshold 😉
Yeah, game server orchestrator built on top of k8s
i think that's big enough for a json with 3 fields
Might look into Amazon gamelift servers but I bet it’s going to eat my whole bank account
Yeah don't x)
Nitrado's B2B offering is built on Agones. Had 180,000 game servers running on that globally at the same time for a launch. Good times
or a single 4096 character long encrypted value
I’ll probably run my own dedi and avoid a host tbh
When will we know how to mod on hytale? On release?
Literally on release
Thanks
why so many servers? Were you guys hosting a Fortnite Event? 😂
Decompile the jar and you are good to go my friend
Last Epoch
£225 for 32gb of ram 💀 do you guys run quantum computers or something!?!
They manage your server
Yeah if you want to do orchestration shenanigans, start with a single node kubernetes cluster with Agones
At least that would be my recommendation from personal experience.
Unless you see that as a purely educational project, you really don't want to build the orchestration yourself.
I’ll have a go at that honestly
I can manage it myself?
Yeah obv you can but not everyone
More control, more freedom
youre obviously not the target customer base of nitrado then
or any game server host really
More control requires more knowledge, I have friends that wont be able to pay for a server login setup firewall etc
Nitrado is an amazing solution for that + you have support
A lot of cheaper hosts out there that have the same offering for much lower but sure
i would assume nitrado support gets questions about basic stuff that anyone with a bit more knowledge can solve on their own but nitrado has to help them so im not surprised the price is the way it is
Its expensive to you because you know the ins and out and it became easier
Compare it with the android market
Have you looked at Hytale? Or Minecraft?
Yes? Why?
gets asked a question with 2 choices and says yes
What else am I supposed to say?
I understand it’s that high price especially because ram is so expensive today, I am just shocked that’s all
Check the prices on the Hytale page specifically, not on Minecraft.
(But the core statement still stands, due to added features we will be more expensive than a VPS or similar solutions)
Again understandable because of the support you guys offer and how much you are giving to the hytale community and others. I am just still shocked
Will the Hytale optimizations Nitrado does be open to public or only customers?
Maybe a stupid decision but we'll make that public, MIT license
btw is the slider on hytale customization for ram supposed to be bugged? or is it intentional that it skips a few ram settings in odd ways below 34gb. like 11->13, 15->18, 18->22->24->28->29->30->34 (the last one is lots of weird steps mixed)
I don’t think it would be a huge problem if it wasn’t made public because there is always going to be developers who will create optimisations for it
Which is the exact reason we're making it public. Somebody would grab the jar and build a competing fork anyway, and all potential market advantage is gone immediately
Its good to have competition so both parties can innovate and make Hytale the best it can be
We had to .. take some shortcuts to enable a purely ram based pricing in a relatively short amount of time. Not something we've done before. So it's a lil wonky, but it works.
Are most of the optimisations chunk related or is there something that’s just really pooping itself?
also interesting that ram is far more useful in hytale than mc
I generally agree, but we've decided to make core building blocks we're building as plugins available to the community as a whole.
Yes, it's great if all commercial hosters try to one-up each other but it can also lead to a fractured ecosystem with a loss of compatibility if everyone runs their own proprietary stuff
Apropos pricing, as a server provider, I suppose you yourself rent bare metal, how much of the pricing for a server is imposed on a buyer? I'm not sure if you're allowed to disclose that, but worth a shot, as I always wanted to know.
Our plugin for that is all about keeping the server stable if it tries to do more than its given resources (RAM, CPU) would allow.
The pure performance optimization is with the Hytale team. They're much better at that than we could ever be
Ah I seeeee, not really server performance just more resource management.
Your misconception here is that we rent our hardware. We sometimes do to cover peaks, but the vast majority we own ourselves in colocated data centers.
That means the whole calculation is a little bit more complicated than rental price plus margin.
Yes, makes sense. I cannot quantify the scales of "known" hosting providers, but I've heard of nitrado way back in 2012, so I supposed you're quite large...
i think i used nitrado even before that with friends before we moved to DIY hosted on VPS/Root servers
Do you guys use pterodactyl for server panels?
Not sure if that was directed at me, but Nitrado doesn't. All custom. We started out before any of these projects existed.
Oooh nice, I’ll have a peek at how it looks like.
We're hoping to build some nice things in there specifically for Hytale. Time is tight until release tho so it's gonna be a challenge
Good luck! Hopefully you guys make it in time 🙌
time to just work through the holidays 😛
Already refactored the web server plugin yesterday 
One thing that gets me excited is speaking with many communities/ hosts and all of them are working through the holidays and getting ready for the launch in some way and contributing to the pot of creation.
Web server plugin? As in hosting a site from the server?
Or any sort of web api, yeah, integrated with the game's permission system
There is a proper post about it on the hytalemodding[.]guide discord
Ooo thanks I’ll take a look! Are you guys the exclusive server host then? I’ve seen so much confusion online about it
We are partnered with Hypixel and are supporting them on a few topics leading up to launch but we are not "exclusive" in any sense
Ahh thanks, I only ask as I see a lot of confusion online. Nice to get a formal answer
they have got exclusive access to the server jar
Well done on all the performance plugin stuff you and the team have been doing though
Hello, will we be able to code plugins as soon as it pre-releases on January 13?
Yes! 
I hope so! I’ve got a Bug tracking platform + server analytics to build for MC + Hytale 👀
Will they provide official documentation, or will we have to dig into the server’s source code ?
I can't speak for what the studio will or will not do. But just looking at the jar will get you a long, long way
Where to get the server?
Andre, how’s the process been to develop plugins so far? Is there a lot built in already?
The days with Minecraft where we had to use a library for everything, would be awesome if majority is already there
devs will post on 13 jan
does hytale server have something like minecrafts query protocol/port where server status can be queried?
It's been pretty straightforward thus far but it's probably also important to highlight that the stuff we have been working on do not deeply integrate with the gameplay systems. We may pull out a metric here and there, or access the permission system, but we haven't influenced gameplay yet, so I can't speak to that.
Is there a built in way to get metrics? :o
I previously built an analytics platform years ago that was acquired by Overwolf. Wanting to go at it again with Hytale too, looking forward to seeing what metrics can be pulled out. Exciting!
Y’all must get a buzz with access early, seeing and exploring everything haha
Our colleagues at Apex have built a prometheus exporter that we are using for our performance/stability tests
(also a plugin that plugs into the webserver plugin)
That’s beast
RELEASE. THE. JAVA. FILES!
Let's create HYTALE UHC and make it an eSport!
Stupid question @vernal niche, were you given any early access to the server APIs? Could you give us a quick rundown on how things are server-wise? Is it similiar to Minecraft's architecture?
Maybe a pre-build of some kind just to test your hardware on before release?
Survival Games 😮
it would be awesome as well
Kinda crazy you can't have eSports with mojang 😭
I think with the different items/mobs Hytale provides we can build minigames that weren't even remotely imaginable on Minecraft without resorting to exterior mods/packs.
Monetary rewards are not allowed
it was almost achieved by Badlion and ESL
but then 1.19 came with PvP update 🙁
Yeah! Best thing is that you can create your own vfx / import items etc
Yeah and the client downloads those on the fly - no need for an external installation or pre-installed mods etc.,
yep... it's awesome
so when an asset is updated server side, is JUST that asset reloaded on all of the clients? or does the whole pack reload?
and related side question: is that automatic, or can it be set to manual?
We have been given access to the server to support the studio. However I am not really qualified to answer your question. For one I am not a Minecraft modder (shame on me) but also our endeavors focus on infrastructure and operations, not on content.
To my understanding there are some significant differences to Minecraft, the Entity Component System probably being the prime example. But these differences should all be there to make these systems more approachable/extensible for modders, even if the concepts might be unfamiliar at first.
But Slikey has also stated publicly that not all systems have reached this state yet, and some might still undergo drastic changes in the time after early access release
We know we have hot reloading but no idea how it works for others
Depends on how they've implemented it tbh we won't know until the APIs become publicly available
ok that makes sense! thanks to you both!
@vernal niche thanks for you sharing all this! Have you collected some experience with quic at nitrado before or is it new for you? Are there challenges regarding safety/ddos prot that you found?
QUIC isn't new to us conceptually but it's our first game with this protocol.
As a general rule, I cannot publicly share our threat assessment wrt DDoS attacks. I hope it's clear why.
Fair. It changes a lot of things for hosters, especially on the network security side... We have lots to learn with this game haha. I still remember how annoying TeamSpeak was to protect against that with it's fancy udp protocol haha
Should we can run hytale server on our own server or have to purchase only from the hosting?
You can self-host or use a Game Sever Provider. Your choice.
When we get the egg? After release
Ok thanks
Hi, im corious on how nitrados architecture looks like. Can u say sth about it? Like are you using kubernetes and run the hytale game servers in docker, ....?
We use container tech, I can say that much.
For more info, nitra[.]do/jobs 😛
@vernal niche Do you know the minimum requirements to run a server please ?
A server should have network access, that's about as much as I know
Interesting, ty !
Do you have any recommendations for CPU requirements ?
how would it validate players if they are authentic
It doesn't
Very much still a moving target at the moment. The important takeaway is that, since it's multithreaded, it also means it can use a lot of cpu if it wants/needs to.
Alright, thanks for the answers !
chat I just bought a new pc even tho RAM prices suck, am I cooked
@vernal niche can I dare ask on what cloud platform (or platforms) Nitrado has its hosting servers? Or is it private cloud / colocation? Sorry, just being curious as a Cloud Engineer 🤣
On-prem bare metal, vast majority self-owned in colocation, including our own ASN.
Cloud is way too expensive for B2C game server hosting.
Well, for starters, I tip my hat to you and Nitrado, it takes quite a lot of skills to run such a thing, but I guess it's only logical considering the scale of your company
Good job, I will definitely consider getting a server
@vernal niche me and some potential investors are also looking into starting a huge set of networks. Will definitely consider you as well for the start.
Y'all making me blush
Any idea when the .jar will be public ?
January 13
ok ty
Do you all think (maybe I lost a blog post or something about this) that there will be geographical restrictions? Let's say I host a server, and because of the contents of the server, it makes sense to limit it to a certain area, would this be possible?
Couldn't you do that on a technical level outside of Hytale? I don't see why they'd need to support that specifically
A reverse proxy with such functionality seems plausible
In fact I am open to any kind of solution, at any level, be it at the server level, or the game level, or any other level 🙂
@vernal niche do you know what's inside the QUIC data packet ?Is it using http/3 or a custom json like structure ?
I think that they already confirmed it is a custom format
I honestly lost this part of the discussion, so there will be a reverse proxy in front of the game server?
good
Not by default, that's kind of a setup effort if you have your own server
No HTTP3, custom binary protocol on top of QUIC
Oh ok, that sounds reasonable
k
Does Nitrado have like a reverse proxy solution (if even needed idk) that can route the QUIC packets?
Here is the quic implementation example
Yeah on the game part, a reverse proxy would need to do more than receive and send back. Atleast a useable one lmao
We will likely not employ something like that on release. Things can always change tho
i built a server with 512Gb memory for hytale, am i cooked ?
512GB ram? How rich are you
huh i thought you guys would just use caddy or some such
We offer dozens of games and the reality is that most of them break if they're even behind NAT. So our infra needs to support public IP and Port anyway
Someone just had an epiphany, I can tell
no just a lot of games dont for some reason
Perhaps not the best question but as the description says it would be java as the programming language for the mods, right? We are not expecting C anymore?
ye
😳
this is interesting
has there been any mention if rcon is supported?
probably not
yeah that's what i'm currently thinking..
do we know any api’s?
no
We wish
Any team planning on working in making a community driven api?
id imagine most are waiting to see whats actually included already before planning anything so grand
We are building the base building block for this (webserver plugin). If we find the time we may do a simple rcon plugin on top of that, however that would be plain mapping to console commands, nothing akin to a proper REST API
mc rcon was also basically just commands wasnt it
u want a bit more security than that tbf
Quick question about Hytale server plugins:
are you planning to have a central/main API for plugins, or is it gonna be more modular?
Trying to understand how plugin dev is supposed to work long-term.
The server was able to crash on I think 8GB with 4 people mass generating chunks
If I recall from tests
Wasn't that due to an entity spawning bug that has since been addressed?
have you guys stress tested the server after the last one? if so did you see any improvements?
No new results I'm able to share at this time, sorry!
He's keeping secrets! 
as he should, he signed a paper
Papers are temporary, information is eternal 😇
"Results not able to share" means results!
I want more information on how the custom UIs will work if there's anything more available on that
Since they're using noesisGUI I imagine reading some of the documentation there (granted it will be for C++ and C# code samples and we'll likely be creating UI elements through Java-authored api binding that Hytale provides for us) should give you a sense of what types of elements/features we can expect to work with
I never heard about that.. hopefully that was the issue
Do we have any idea if there will be a documentation on release for developing server plugins in Java?
do we know its noesis in the java version?
Anybody know if there’s any like information dump or blog that I can read to see info abt plugin/modding/whatever hytale is doing
#announcements and #showcase?
There are blogs on the official Hytale website!
8Gb ram for 10 players 😬
8 GB of Ram for 10 players generating chunks
"Based on our play tests, we now recommend the following values for a "standard" Exploration/Adventure mode play style"
Those are recommendations just to handle those player amounts,
