#server-plugins-read-only

1 messages · Page 33 of 1

near raptor
#

Microtransactions / DLC in an Early Access game are also frowned upon. I know that ARK did this, releasing paid DLC whilst still in EA, and that was met with a lot of critique

kindred crescent
#

DLC when in early access doesn't even make sense 💀

#

Like, finish the game lil bro

near raptor
#

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

kindred crescent
#

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

sharp lake
kindred crescent
#

Like people already paid for you to finish the game and you're charging them again

sharp lake
#

how much did ark early access cost versus their full release?

near raptor
#

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

sharp lake
#

oh bruh it's still not out

near raptor
#

So ARK is still in EA even though they are working on ARK 2?

sharp lake
#

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

kindred crescent
#

And then people wonder why we say "Steam's early access doesn't mean Early Access"

old bough
#

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!

kindred crescent
#

That's nothing new?

earnest sparrow
#

except camera angles but that doesn't mean much, eg are they static or full on camera paths

kindred crescent
near raptor
#

I think all of this was already known right?

kindred crescent
#

It's really just the client stuff that is new

buoyant tulip
#

We have already been told that, we can modify everything they can.

kindred crescent
#

Client side texture packs and shaders is new

earnest sparrow
#

i thought they said shaders wouldnt be a thing earlier

kindred crescent
#

This is what having devs listening to the community means 😛

buoyant tulip
earnest sparrow
#

cool, then we can make some cool effects instead of just particles

old bough
#

Is client side texture packs going to be a thing on release, or is it coming later

old bough
#

I thought about coding an in-game texture pack loader that simply just assigns server-side textures to specific users upon their choosing.

buoyant tulip
old bough
kindred crescent
sacred tulip
# kindred crescent ???

Ui should be standardized across servers. At least the elements. If it's customizable there should still be limitations.

kindred crescent
sacred tulip
#

Better player experience across servers

buoyant tulip
kindred crescent
old bough
#

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

sacred tulip
karmic bane
#

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

west elk
#

Hytale is not and should not be responsible for the quality of fan-made servers

summer loom
#

Im gonna be honesty, 99% of servers will just use the default.

buoyant tulip
#

as they should.... most servers wont have something to offer that different.

strange tapir
summer loom
west elk
#

If a server's ui is bad, let them fail and learn and improve. That's now we grow as a community

strange tapir
#

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

summer loom
#

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.

west elk
#

And with time, we will have many solid templates and examples from open source mods that do it well

summer loom
#

And it will atleast be better than a certain other game where you have to use chest inventories as menus.

fleet isle
#

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.

strange tapir
fleet isle
sacred tulip
summer loom
kindred crescent
#

"We shouldn't have cars because people will use them to kill people"

fleet isle
#

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."

sacred tulip
summer loom
fleet isle
kindred crescent
west elk
#

Honestly, Hytale might be the wrong game for you ^^

summer loom
sacred tulip
summer loom
fleet isle
#

"Remove Hytale, add Yourtale"

old bough
#

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

daring lodge
#

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

kindred crescent
sacred tulip
#

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

sacred tulip
#

But Unlike chrome you won't have client side mods like adblocker

summer loom
#

smh we haven't even discovered fire yet and already worried about late-stage capitalism

west elk
#

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

sacred tulip
#

Regardless, I'm entitled to my opinions and concerns and this is the channel to voice them

tired falcon
#

i like how active this chat is for literally talkign about nothing

sharp lake
#

wdym

tired falcon
# sharp lake wdym

There is no API released yet so we're literally just speculating on what it might be like.

tired falcon
sharp lake
tired falcon
#

Can you share some links to details? I'm new here. My experience is just a lot of Spigot plugins

sharp lake
#

Their blog post for one

#

And all of their Q&As, you can also look at Slikey on Twitter

tired falcon
#

fire, thank you

sharp lake
#

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

rugged zephyr
#

hi, do we know anything about the plugin api yet?

sharp lake
tired falcon
rugged zephyr
sharp lake
#

lmfao how big is your display
can you actually not see any of the previous messages at all

rugged zephyr
tired falcon
#

it's all good hahaha

#

i was asking the same exact question 2 minutes ago

#

I hope it works like bukkit

sharp lake
#

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 🙈

tired falcon
#

Definitely will considering who developed it. Like I think we can just assume it’ll be really similar

tired falcon
sharp lake
#

if you jump to this message, you can see some code examples right below it

sharp lake
kindred crescent
sharp lake
#

Why would console not support a JVM

kindred crescent
karmic bane
#

Why would you wanna run the server on a console

sharp lake
#

Singleplayer

kindred crescent
sharp lake
karmic bane
#

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?

karmic bane
#

I mean it just has to adhere to the Hytale server protocol

kindred crescent
karmic bane
#

I mean that would explain the complications to provide the client for mobile & console lmao (apart from alot other things)

kindred crescent
karmic bane
sharp lake
#

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

kindred crescent
#

I play PC anyway

karmic bane
karmic bane
#

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

sharp lake
karmic bane
sharp lake
#

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

kindred crescent
#

Plenty of games are made with C#

stray pasture
kindred crescent
stray pasture
# kindred crescent Plenty of games are made with C#

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

kindred crescent
stray pasture
#

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)

sharp lake
kindred crescent
stray pasture
karmic bane
#

btw have you guys seen the Kaupenjoe interview with Slikey?

kindred crescent
#

Love their openness to adding texture packs and shaders

stray pasture
#

We should make an F# Hytale plugin. Get your functional practice in

karmic bane
#

Let's invent the Hy# programming language

stray pasture
karmic bane
#

On the .TALE framework

hexed pilot
stray pasture
stray pasture
untold wraith
#

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?

west elk
untold wraith
#

Sweet, I'll keep tabs on the website, and discord.

strange tapir
dawn scaffold
#

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?

west elk
dawn scaffold
#

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

west elk
#

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

dawn scaffold
#

thx

naive heath
#

Does QUIC support cloudflare proxy?

karmic bane
#

You'd have to look that up on the cloudflare proxy docs

west elk
karmic bane
#

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

leaden mango
#

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)

karmic bane
#

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

naive heath
karmic bane
rose atlas
#

we need more info!

karmic bane
#

I am too scared to ping

kindred crescent
#

@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

sharp lake
#

I just don't have any QUIC applications to test with

near raptor
#

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

sharp lake
#

It's not thoroughly documented usually

stone cedar
#

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

near raptor
#

I hope that QUIC is just QUIC, and that there are no 2 standards defining it

karmic bane
stone cedar
#

RFC9000 it seems

karmic bane
#

Maybe I'll shortly have enough energy to rise from my bed, then I can test

west elk
#

My research comes up with Quilkin which seems to be exactly for this use-case, lol

#

udp proxy for large scale multiplayer games

karmic bane
#

udp is not equal quic

stone cedar
#

apparently caddy can do it with a layer4 plugin for generic udp stuff

stone cedar
#

i mean kinda in the name of Quick Udp Internet Connections

karmic bane
#

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

sharp lake
sharp lake
stone cedar
#

id be a bit worried if they used a protocol that isnt easily supported by load balancers tbh

sharp lake
west elk
#

QUIC will be more widely supported when Hytale reaches 1.0 😉

sharp lake
#

LOL true enough

west elk
#

you can also do load distribution with plain transfer packets. there are only a few use cases where a proxy is necessary

karmic bane
sharp lake
stone cedar
sharp lake
#

I mean, I definitely want a reverse proxy
I don't plan on opening a bunch of ports to get each server accessible

sharp lake
stone cedar
#

yeah i cant find docs for nginx quic without it being http3 related

sharp lake
#

It's not documented 💀 💀 we know that much

loud raft
#

Never tested it just remember he explicitly stated it

karmic bane
sharp lake
#

Yeah but Slikey could've been assuming

sharp lake
west elk
# loud raft Never tested it just remember he explicitly stated it

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.

sharp lake
#

They have the groundwork for pure streams, but I don't know if it's actually accessible

karmic bane
#

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

sharp lake
karmic bane
sharp lake
#

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

karmic bane
#

is it layer 3 idk I forgot all about it

random magnet
sharp lake
#

lmfao

karmic bane
random magnet
#

y'all are beyond the point where i can help ❤️

sharp lake
#

It's not actual HTTP3 in Hytale right? So does Nginx properly support the QUIC streams or is it untested lmao

karmic bane
#

Zero is typing

strange tapir
random magnet
#

so if i was wrong about quic proxy support for nginx, write your own in netty

sharp lake
#

Yeah, it shouldn't be too hard to just patch Nginx though

west elk
#

custom Envoy config is probably easier (but I don't have much experience with either)

karmic bane
loud raft
karmic bane
#

viewing code on mobile oof

stone cedar
#

guess imma setup caddy l4 tomorrow since it should easily do raw udp stream proxy and iirc has a quic stream matcher

karmic bane
sharp lake
#

If it can do matching then you're golden, because that's the problem with a UDP proxy lol

sharp lake
west elk
#

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

karmic bane
#

More so the Hytale team but oh well

sharp lake
#

I don't want to be a networking pioneer 😭 😭

random magnet
#

everyone hating on network engineers lmao

karmic bane
random magnet
#

its HIGH octane cope, yes fossil fuel joke

west elk
#

if you start developing your own hytale proxy, you will end up stuck with a bungeecord like project ^^

karmic bane
karmic bane
#

Everyone writing up their small little solutions and one or two becoming bigger is so nostalgic to me

strange tapir
karmic bane
strange tapir
#

Given that quic is encrypted, it would depend if nginx does TLS termination and then does inspection on the data inside of QUIC

karmic bane
strange tapir
#

but also, I've used nginx to proxy minecraft before with a TCP proxy so you never know what is possible ¯_(ツ)_/¯

strange tapir
karmic bane
strange tapir
#

If you take the nginx example and just throw random data in the stream that should be close enough

karmic bane
#

Time to feed it my beloved lorem ipsum

old moon
#

Hello world

karmic bane
#

Hello Huski!

old moon
#

Damn my code worked

karmic bane
sharp lake
#

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

karmic bane
#

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 ALPN

nginx will drop it silently.

no matter how I word it lmao

sharp lake
#

Stop asking AI for the love of god lol

karmic bane
#

yeah but I am on the phone and too lazy to walk to my pc lmao

oak hornet
#

Hi zero and slikey

sharp lake
#

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

karmic bane
#

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

sharp lake
#

Lmao you could even write the proxy in Python

karmic bane
#

Python needs to burn (very objective statement yes)

#

Also it is very satisfying that the QUIC spec has the RFC number 9000

kindred crescent
sharp lake
#

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

karmic bane
#

maybe reducing bloat because no one used the feature back then

sharp lake
#

Maybe it was partially broken and nobody used it to begin with 🤣

karmic bane
#

Traversing new grounds like this is actually pretty fun

#

well "new" grounds

sharp lake
#

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

leaden mango
sharp lake
#

Not really

#

Those imitate the game, we don't need to do that at all

karmic bane
#

they do? lmao

sharp lake
#

They use hacks and imitation tactics to trick the game into making it work

next zinc
#

@meager viper what you have to say about this

sharp lake
#

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

meager viper
sharp lake
#

If you look at the code for Velocity versus a normal proxy, you'll see the big difference

leaden mango
leaden mango
sharp lake
#

And route them accordingly

leaden mango
sharp lake
#

That's why transfer packets aren't a replacement for Velocity

leaden mango
sharp lake
#

Network wide commands would need to be handled by a plugin, not the proxy

leaden mango
sharp lake
#

How is that a deployment nightmare, it's two symlinks 😭

leaden mango
#

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

karmic bane
leaden mango
#

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

karmic bane
#

What do you mean by "crackdown all of the packets"

sharp lake
#

I assume like, an understanding of them

leaden mango
karmic bane
#

Understanding the packets will come quick I assume

leaden mango
karmic bane
#

A custom proxy ofc is flexible, but there's also the issue of maintainability and starting to code it in the first place

sharp lake
#

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

karmic bane
leaden mango
#

i think

sharp lake
#

Zero is a dev

leaden mango
sharp lake
leaden mango
#

it depends all on how the transfer packet works basically

karmic bane
#

Some reverse proxy solution will be needed no matter what

sharp lake
formal burrow
#

reverse proxying is extremely easy nowadays now that we have claude/chatgpt

sharp lake
#

What do those have to do with reverse proxying 😭

formal burrow
#

cause there are many people who don't even know they gotta reverse proxy in the first place

sharp lake
#

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 💀

leaden mango
# sharp lake

that's actually great - but still idk about network wide data and commands like player count smth like a /server command or so

karmic bane
#

I mean "getting away without reverse proxying" equates traversing the internet naked

sharp lake
karmic bane
leaden mango
#

or a similiar service that provides domain wide DDOS-Protection

karmic bane
#

wouldnt that also need to sit in front of the server the same way a reverse proxy does

noble turtle
#

😔

leaden mango
noble turtle
#

You guys realise dns protect your server in no way possible. You can just find the actual server ip

leaden mango
karmic bane
leaden mango
#

Cloudflare for example have a server infront of ur and is basically proxying all trafic to the origin server

leaden mango
sharp lake
#

we're all doomed.

leaden mango
sharp lake
#

Like 1% of game servers are targets for 99% of DDoS attacks, I don't think you really need to worry about them lmfao

leaden mango
#

unless an another server owner is jealous of your success - not that this happend on any minecraft server before....

sharp lake
#

Anyone that successful is going to have the resources for DDoS protection anyway

leaden mango
#

And server who are profitable could aldo buy cloudflare enterprise or smth like that

karmic bane
#

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

sand crown
#

When will the Hytale server be released?

summer loom
glossy quartz
summer loom
glossy quartz
summer loom
#

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.
formal burrow
glossy quartz
stray pasture
sacred tulip
#

They risk splitting their player base between both games

loud raft
#

They let you opt into the Cloudflare network if you have the pro or premium plan too it seems

sand crown
#

🤔

sharp lake
#

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

vernal niche
#

stray pasture
#

Oh Andre got a cooler tag now. The "server provider" tag

lunar lance
#

nginx seems like a weird choice to proxy quic

#

why not haproxy? lol

sterile salmon
#

What are you doing here MiniDigger

#

what happened with the dyescape my friend @lunar lance

scenic edge
#

server jar release?

west elk
scenic edge
#

Is there a site that shares Hytale plugins?

lunar lance
sterile salmon
inner meadow
#

paper my goat

sterile salmon
#

theres atleast any documentation on how to make server-plugins? or they will wait the game release to publish it?

karmic bane
lunar lance
#

mmmh, I see, so I guess you need to go down a few layers, that sucks

fleet isle
summer otter
#

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

daring lodge
#

maybe one of the rust fanboys can be useful for once and make a simple reverse proxy specifically for hytale

karmic bane
karmic bane
# fleet isle Wait so nginx won't work with Hytale?

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

steep lion
#

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.

fleet isle
#

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

steep lion
#

yeahhh

#

I wouldn't even be able to host my server on my usual setup at all if theres no reverse proxy

fleet isle
#

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

karmic bane
silver bronze
west elk
fleet isle
silver bronze
#

Ah like that, but that wouldn't work for large scale servers either because the server would be overloaded

steep lion
#

apparently nginx dropped the support for proxying QUIC streams

karmic bane
fleet isle
steep lion
#

or none at all

west elk
karmic bane
#

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

steep lion
karmic bane
steep lion
#

hmmm this is really annoying

fleet isle
karmic bane
#

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

steep lion
#

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

west elk
steep lion
#

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

fleet isle
#

at that point the proxy is essentially useless in a way

karmic bane
#

why is RFC 9000 so long 😭

#

can a man not just quickly implement QUIC smh

fleet isle
#

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...

karmic bane
#

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

stray pasture
#

EY!!! We have voxels "stamping" 😄 Pasting imported models. 😄 - This is pretty cool!

lunar lance
#

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

steep lion
#

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

karmic bane
#

You can terminate at Level 4, its just not as flexible but should work

steep lion
#

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

karmic bane
#

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

steep lion
#

ohh sounds fun

karmic bane
#

even has SNI-based routing and doesn't restrict to ALPN-based routing

#

actually I wanna try that

neat scaffold
#

is the api coming out before the game?

fleet basin
karmic bane
#

not much atleast

sharp lake
sharp lake
sharp lake
steep lion
sharp lake
#

when was the last commit for it?

steep lion
#

yesterday

sharp lake
#

yeah okay i'll probably look at it too

steep lion
#

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

sharp lake
#

minecraft is basically impossible to keep up to date
it's extremely high maintenance

steep lion
#

yeah

sharp lake
#

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

steep lion
#

dont know why i made the decision to do so but

sharp lake
#

discord hasn't broken spec in literal years

steep lion
#

id like to have a simple yet stable vanilla-focused server for hytale

sharp lake
#

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

steep lion
#

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

sacred tulip
#

Why is it a competition

sharp lake
#

it's not even out yet, why would you have competition lol

steep lion
#

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

stone cedar
#

so i just tested caddy with the l4 plugin and the quic matcher works outside of http frames and supports sni matching as well

silver cloak
steep lion
#

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

silver cloak
#

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)

steep lion
#

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

stone cedar
#

welp i guess i cant post the example configs i made for caddy thanks to some automod

silver cloak
#

That sucks, I hope hytale provides you joy. Considering adding custom features won't require 200IQ

steep lion
#

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

stone cedar
silver cloak
steep lion
#

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

steep lion
#

everyone has a fresh start + it has a built in server browser

silver cloak
#

The most important is to create something that YOU would play

stone cedar
#

actually nice cause i run caddy anyway

silver cloak
#

when hypixel was released in 2013, they were providing unique minigames they themselves would play

stone cedar
#

so for me the whole quic proxy and loadbalancing is easily solved then

steep lion
stone cedar
#

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

stark nebula
#

Can you link me the examples 😅? I wanna try something myself

stone cedar
#

besides the class name, app protocol and port i changed nothing

steep lion
#

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

stone cedar
#

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

steep lion
#

ah

#

aioquic on python also seems good for writing a test server/client though

stone cedar
#

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

steep lion
#

tomorrow (if i dont procrastinate) i will be testing rust-rpxy-l4 with a python aioquic client/server

stone cedar
#

the only thing i didnt test yet is load balancing the quic streams

steep lion
#

QUIC seems really promising except the fact that there are not a lot of software support yet

stone cedar
#

ok the included load balancing in caddy layer4 also works as expected

#

actually will hytale also support SRV records?

fleet basin
strange tapir
# stone cedar actually will hytale also support SRV records?

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

stone cedar
#

so planned for future just not right now

fleet basin
#

I think using library that implements DNS is the easiest thing

steep lion
fleet basin
steep lion
#

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

fleet basin
#

or just non-english alphabet

steep lion
#

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

worn idol
#

I assume all the server info will come out sometime after release or are we getting lucky and having on release/before?

west elk
#

Server source code some time after release

sharp lake
#

I plan on just patching my existing nginx setup and using that alongside all my other stuff

ebon axle
#

Do you already have a tutorial ready on how to open a dedicated server?

west elk
#

All we have for now is the modding blog post and a couple tweets ^^

#

You can prepare JRE-25

tidal mauve
#

ye im preparing my debian VM with docker and such

sharp lake
tidal mauve
#

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

sharp lake
#

fair enough, i also containerize all my stuff for portability reasons

tidal mauve
#

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)

west elk
#

Multicraft is also usable since they were bought by Nitrado

#

Bet it'll be just as easy to run Hytale on that

tidal mauve
#

im gonna try with portainer access control stuff first

#

i mean, doesnt need that much, ftp for file upload/download, logs, console

stark nebula
sharp lake
#

no lol
you can just use normal unix permissions if you really wanted to for that

tidal mauve
#

the guide for using it on top of docker is lacking at best and factually wasnt working as is

sharp lake
#

what are the actual benefits of pterodactyl? lol
it just sounds like an extra dependency for no real reason 🙈

tidal mauve
#

same as pelican

#

its an admin panel with access control

#

and they bake in political messages into their product which is never welcome lol

stark nebula
#

I used argocd when I had devops responsibilities and yea i was looking for something similar

#

Is portanier open source? Havent heard about it

tidal mauve
#

im not sure if it is

#

they have community edition and a github repo

#

which is what i use, because i dont pay for softwareHypixel_Sketchy

sharp lake
#

i just use podman to inspect resources and attach to the console 💀

west elk
tidal mauve
#

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

silver cloak
tidal mauve
#

now the forever argued about question

#

lxc vs vm for docker

west elk
#

I'm happily using Docker without knowing those acronyms ^^

stray pasture
tidal mauve
tidal mauve
#

if you run docker directly on proxmox, you really shouldnt💀

stray pasture
#

LXC is kind of that. However Docker is containerized this actually has a use for it!

stark nebula
#

I'd guess for our use case VM might be a better choice due to isolation

#

Mostly due to security

tidal mauve
#

the current stack for me looks like this:
[jre]->docker->debian(VM)->proxmox->[hardware]

stray pasture
#

Depends! Docker is secure! Discord uses bare metal and docker for their services. 😄

tidal mauve
#

could also be [jre]->debian->hardware with same resultHypixel_Sketchy

stray pasture
#

You can run Debian in the JRE?

tidal mauve
#

you are reading it the wrong direction

#

you run jre in debian

stray pasture
#

Ooh I see. Your right.

Was gonna say!

west elk
fathom pelican
#

just passing by to say happy holidays to those that celebrate!

tidal mauve
#

if you celebrate

summer sapphire
#

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.

fringe ore
#

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?

delicate crag
naive heath
#

I presume kotlin is supported because it uses jvm

sharp lake
sage panther
#

I know you IRL bro

#

we went to college together

fringe ore
#

Is anyone already planning on making a full decompile and documentation of server software when it comes out?

sage panther
dawn scaffold
#

Why C#?

stray pasture
sage panther
#

his argument is that it will be more performant, and he is just good at it

stray pasture
dawn scaffold
stray pasture
sage panther
dawn scaffold
sage panther
dawn scaffold
versed harbor
# summer sapphire Sorry it took me so long to get back to this! If you’re new, I’d recommend lear...

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 🤪

stray pasture
#

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.

stray pasture
summer sapphire
sage panther
dawn scaffold
versed harbor
stray pasture
summer sapphire
# stray pasture I disagree man. Don't "Skip" use of something because people fail to learn prope...

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.

tidal mauve
#

ill probably try and do it on my own first though

sage panther
sweet jetty
stray pasture
# summer sapphire That’s a fair argument, but I still think that as a beginner, avoiding things yo...

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.

naive heath
#

Does anyone know if there was an event system shown anywhere? or what it looks like?

stray pasture
naive heath
#

Just thinking if it will look like minecraft listeners or whatever

stray pasture
main moon
#

I literally got banned of a developer server because I made every single variable static

#

Talking about 10+ years ago

versed harbor
summer sapphire
# stray pasture Hiding tools doesn't help, it just delays the confusion. - The main issue is peo...

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

stray pasture
summer sapphire
#

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.

versed harbor
#

But it worked!

versed harbor
stray pasture
summer sapphire
#

Yeah a lot of people don't like OOP. But a lot love it, including me

stray pasture
summer sapphire
stray pasture
summer sapphire
#

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.

stray pasture
dawn scaffold
summer sapphire
stray pasture
summer sapphire
#

Inheritance is not composition

summer sapphire
# stray pasture Correct! ECS is an architecture, but ECS fights against OOP fundamentally. - I a...

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

stray pasture
summer sapphire
#

No, inheritance is like:
A cow is an animal

Composition is:
A cow has a belly

stray pasture
#

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.

summer sapphire
#

So you're saying an animal is a belly?

dawn scaffold
vernal niche
stray pasture
main moon
#

🍿

summer sapphire
#

No but I just said earlier Inheritance doesn't specify animals have bellies, it's IS A not HAS A. Remember the cow example?

dawn scaffold
#

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

stray pasture
# summer sapphire No but I just said earlier Inheritance doesn't specify animals have bellies, it'...

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
faint void
#

You can do the same thing in oop with object components no?

summer sapphire
#

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

stray pasture
summer sapphire
#

I think you're confusing yourself, I'm not sure what you're trying to argue

stray pasture
#

I don't like oop, I like data oriented.

summer sapphire
#

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

stray pasture
#

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

summer sapphire
#

That's not true though, you don't have to have inheritance in OOP

#

It's not a rule, it's a guideline

primal shoal
#

How would you have multiple composition with oop inheritance

#

Like a player has an inventory, model, input mapping etc

summer sapphire
#

Are you asking because you don't understand how?

primal shoal
#

I’m asking because I disagree that inheritance is the same as composition

summer sapphire
#

There's no agree or disagree, they are just different concepts. It's not an opinion

primal shoal
#

I thought niklas was saying they’re the same

summer sapphire
#

He was, I was trying to explain that they are different

primal shoal
#

Ye same direction I was going

summer sapphire
#

I see, okay

stray pasture
dawn scaffold
#

uff

summer sapphire
dawn scaffold
#

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

summer sapphire
#

Hmmm

#

I know Hytale has a transfer packet so we won't need something Bungeecord

faint void
#

I was about to say, it would be nice if server transferring was built into hytale

dawn scaffold
#

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

stray pasture
# dawn scaffold www(.)geeksforgeeks.org/java/difference-between-inheritance-and-composition-in-j...

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

dawn scaffold
stray pasture
dawn scaffold
#

ok. In the world of OOP you have both concepts meaning sth different, explained by the article

stray pasture
dawn scaffold
#

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

stray pasture
#
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.
main moon
#

Tbh I can see why newbies dont want todo this

dawn scaffold
#

yes

main moon
#

They dont see the effect in the longrun

dawn scaffold
stray pasture
#

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)

dawn scaffold
#

didnt meant that but yeah

#

Why do you prefer it over OOP?

sacred tulip
stray pasture
# dawn scaffold Why do you prefer it over OOP?

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.

dawn scaffold
dawn scaffold
stray pasture
sacred tulip
sacred tulip
dawn scaffold
#

yeah of cause also do
tesla.engines.for(e->e.start)

faint void
#

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

sacred tulip
dawn scaffold
#

yeah yeah Its not good code it was to demonstrate the difference between composition and inheritance

sacred tulip
faint void
#

Yeah that's true

#

You'd need to have a 2nd getEngine() with a parameter for a specific engine

dawn scaffold
#
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

sacred tulip
#

I think the benefit of ECS is it allows for more unexpected extensions than inheritance without class explosion

faint void
#

I think composition should be used as much as possible over inheritance. Inheritance should be saved for specific situations where it would work well.

dawn scaffold
stray pasture
lilac stratus
stray pasture
#

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.

thorn pike
#

will there be a guide to make plugins/mods?
is there any info about how we can host servers?

west elk
scenic edge
#

Is there currently a website where plugins can be shared?

sage panther
near raptor
fleet isle
#

Wait hold up... since we can't use any proxies out there... will I have to deal with SSL certificates on my own?

dawn scaffold
#

I’m more interested in backend and software architecture etc so I and some friends already have a project

old moon
fleet isle
old moon
fleet isle
old moon
#

Sorry was messaging a friend, more active in here now

fleet isle
old moon
#

I honestly don’t think we will have to worry about certificates at all

fleet isle
#

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

fleet isle
old moon
#

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

fleet isle
fleet isle
old moon
#

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

vernal niche
fleet isle
vernal niche
fleet isle
vernal niche
vernal niche
fleet isle
vernal niche
old moon
#

Oh it’s made by google?

old moon
vernal niche
fleet isle
#

i think that's big enough for a json with 3 fields

old moon
#

Might look into Amazon gamelift servers but I bet it’s going to eat my whole bank account

vernal niche
#

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

stone cedar
old moon
#

I’ll probably run my own dedi and avoid a host tbh

karmic coyote
#

When will we know how to mod on hytale? On release?

main moon
#

Literally on release

fleet isle
old moon
#

Decompile the jar and you are good to go my friend

old moon
#

£225 for 32gb of ram 💀 do you guys run quantum computers or something!?!

vernal niche
# old moon I’ll probably run my own dedi and avoid a host tbh

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.

old moon
old moon
main moon
#

Yeah obv you can but not everyone

old moon
#

More control, more freedom

stone cedar
#

or any game server host really

main moon
#

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

old moon
#

A lot of cheaper hosts out there that have the same offering for much lower but sure

stone cedar
#

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

main moon
#

Its expensive to you because you know the ins and out and it became easier

main moon
vernal niche
old moon
stone cedar
#

gets asked a question with 2 choices and says yes

old moon
#

I understand it’s that high price especially because ram is so expensive today, I am just shocked that’s all

vernal niche
#

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)

old moon
#

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

main moon
#

Will the Hytale optimizations Nitrado does be open to public or only customers?

vernal niche
stone cedar
old moon
#

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

vernal niche
old moon
vernal niche
old moon
#

Are most of the optimisations chunk related or is there something that’s just really pooping itself?

stone cedar
#

also interesting that ram is far more useful in hytale than mc

vernal niche
delicate crag
vernal niche
old moon
vernal niche
delicate crag
stone cedar
#

i think i used nitrado even before that with friends before we moved to DIY hosted on VPS/Root servers

old moon
#

Do you guys use pterodactyl for server panels?

vernal niche
old moon
vernal niche
#

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

old moon
#

Good luck! Hopefully you guys make it in time 🙌

stone cedar
vernal niche
severe agate
scarlet atlas
vernal niche
scarlet atlas
#

Ooo thanks I’ll take a look! Are you guys the exclusive server host then? I’ve seen so much confusion online about it

vernal niche
scarlet atlas
#

Ahh thanks, I only ask as I see a lot of confusion online. Nice to get a formal answer

tidal mauve
#

they have got exclusive access to the server jar

scarlet atlas
#

Well done on all the performance plugin stuff you and the team have been doing though

exotic girder
#

Hello, will we be able to code plugins as soon as it pre-releases on January 13?

scarlet atlas
exotic girder
vernal niche
keen parrot
#

Where to get the server?

scarlet atlas
#

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

tidal mauve
stone cedar
#

does hytale server have something like minecrafts query protocol/port where server status can be queried?

vernal niche
scarlet atlas
#

Y’all must get a buzz with access early, seeing and exploring everything haha

vernal niche
daring lodge
#

hopefully they release the java files too

#

i want to build the jar and modify it

vernal niche
silver cloak
timid gust
#

Let's create HYTALE UHC and make it an eSport!

mortal lance
#

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?

silver cloak
timid gust
silver cloak
#

Kinda crazy you can't have eSports with mojang 😭

mortal lance
#

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.

silver cloak
#

Monetary rewards are not allowed

timid gust
#

but then 1.19 came with PvP update 🙁

silver cloak
mortal lance
silver cloak
#

yep... it's awesome

rose shard
#

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?

vernal niche
# mortal lance Stupid question <@342580274925797376>, were you given any early access to the se...

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

silver cloak
mortal lance
rose shard
#

ok that makes sense! thanks to you both!

jolly leaf
#

@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?

vernal niche
jolly leaf
kindred merlin
#

Should we can run hytale server on our own server or have to purchase only from the hosting?

vernal niche
kindred merlin
dawn scaffold
vernal niche
exotic girder
#

@vernal niche Do you know the minimum requirements to run a server please ?

vernal niche
karmic bane
#

A server should have network access, that's about as much as I know

exotic girder
# vernal niche

Interesting, ty !
Do you have any recommendations for CPU requirements ?

main moon
#

Well acutally it doens't need network access

#

You can perfectly run it offline

daring lodge
#

how would it validate players if they are authentic

main moon
#

It doesn't

vernal niche
exotic girder
karmic bane
#

chat I just bought a new pc even tho RAM prices suck, am I cooked

marsh edge
#

@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 🤣

vernal niche
marsh edge
#

Good job, I will definitely consider getting a server

mortal lance
#

@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.

vernal niche
#

Y'all making me blush

exotic girder
#

Any idea when the .jar will be public ?

near raptor
#

January 13

exotic girder
#

ok ty

marsh edge
#

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?

karmic bane
#

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

marsh edge
#

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 🙂

tired pasture
#

@vernal niche do you know what's inside the QUIC data packet ?Is it using http/3 or a custom json like structure ?

near raptor
#

I think that they already confirmed it is a custom format

marsh edge
tired pasture
#

good

karmic bane
vernal niche
marsh edge
tired pasture
#

k

karmic bane
west elk
karmic bane
#

Yeah on the game part, a reverse proxy would need to do more than receive and send back. Atleast a useable one lmao

vernal niche
earnest jungle
rose atlas
stone cedar
vernal niche
stone cedar
#

makes sense

#

wait does hytale support ipv6

vernal niche
stone cedar
#

no just a lot of games dont for some reason

radiant elm
#

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?

karmic bane
#

ye

warm hare
warm hare
devout cipher
#

has there been any mention if rcon is supported?

karmic bane
#

probably not

devout cipher
#

yeah that's what i'm currently thinking..

coarse frost
#

do we know any api’s?

karmic bane
#

no

main moon
#

We wish

dusky plume
#

Any team planning on working in making a community driven api?

stone cedar
#

id imagine most are waiting to see whats actually included already before planning anything so grand

vernal niche
stone cedar
#

mc rcon was also basically just commands wasnt it

tidal mauve
#

u want a bit more security than that tbf

tiny frost
#

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.

formal burrow
#

If I recall from tests

west elk
loud raft
vernal niche
karmic bane
tidal mauve
#

as he should, he signed a paper

karmic bane
#

Papers are temporary, information is eternal 😇

fringe ore
sacred tulip
#

I want more information on how the custom UIs will work if there's anything more available on that

hexed kernel
formal burrow
clear crow
#

Do we have any idea if there will be a documentation on release for developing server plugins in Java?

stone cedar
karmic bane
#

yes

#

they're switchting to it atm, idk if it will be complete at launch

potent egret
#

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

mystic gyro
sterile dove
#

8Gb ram for 10 players 😬

summer loom
sterile dove
#

Those are recommendations just to handle those player amounts,