#server-plugins-read-only
1 messages Β· Page 23 of 1
It would be such an unusual addition, so I'm guessing that won't be the case
But it would certainly be interesting if it's actually live-live and not horribly laggy to fetch new assets
Dynamic asset generation is one feature that is integral for some things my team has planned. It might be something we end up bothering the devs to implement if it isn't available.
You'll always be able to generate them dynamically at startup, no matter how they tackle this
But doing so while running is the quirky one
Do you actually need it while running? And not just at startup
Because that sounds like a really interesting thing you're putting together if so
Yes, for a few reasons. We could implement a version of that particular feature that statically generates at startup, but it limit the possibilities in a way that I don't like.
I honestly feel like it will be server-driven streaming to deliver the assets live. You update your assets on your server and once you apply these updates, the assets will be sent through immediately for clients to ingest?
I want to talk more about it but we're keeping the details under wraps for the time being.
If it's not intensive and you can just send assets literally whenever you want, that will be so neat for a billion things
There is a danger in this also right, changing assets live could cause some issues potentially? Unless there is another layer put in place to make sure that the assets are all vali.d
That really depends on how all this is implemented. I hope it doesn't end up being a problem. If so.... time to bother the devs π
Presumably, anything invalid would just do nothing
I think the live assets is going to be what a lot of server owners will need to get used to and probably won't get right straight away
You can just add your own validation as well, no need to bother them
User-uploaded paintings, statues, etc would all be super cool
And it would be even neater if you could do it from in-game, uploading arbitrary data when prompted
I'd expect things like that to require a web server though lol
Oh, I think there was a misunderstanding somewhere down the chain. We're not planning any UGC... well, yet at least π . The dynamic content I'm talking about would be decided based on server-side logic.
So no need to worry about the headache of asset validation.
Idk what UGC is! But dynamic content applies to user-uploaded stuff and logic-driven stuff
User generated content
UGC = User Generated Content. Sorry, I am addicted to abbreviations.
Yeah I had to think about that one for a second
I think we're talking about the same concepts still, just different ways of using live assets
Yeah it's pretty much the same idea, minus needing to validate player submissions I guess.
You could always generate garbage data by accident, so you might still want a validator if there isn't one built-in for handling bad assets gracefully
Minecraft for example just drops the entire datapack lol
Yeah true. Sanity check validation.
And in these circumstances, that would be dropping literally everything, since it's fully data-driven π
So I'm assuming they just ignore bad files
this kind of excitement is draining π© LMAO
can't handle a Hytale revival and Steam Controller 2 both coming out in january
Yeah. I've been losing my mind. Mostly trying to channel that energy into design documents and planning. It's sort of working.
Just dawned on me that you don't need an external web form for uploading if you can send chat commands LOL
You can just have the user send an image link and handle it on the server's side
We've seen this done on Minecraft already actually, with "Image to Map" plugins
Could probably make some neat demos with something like /mold ruby:3:2 for customizing a sword's adornment, length, and hilt width
Just as an example
/statue sketchfab.co/id and /painting imgur.co/id
Simple polygon and bounding box validation checks for the former, and a standard NSFW filter for the latter
Is there any info about server plugins rn or is it all speculative
That'd be pretty sick. Would let players customize how some items look, within reason. Outside of a command I could see it being used for a very complex weapon and tool crafting system. Like Tinker's Construct on steroids.
There's been a blog post, some interviews, and some tweets
It's not all speculative
Optimistically, you'd be able to just allow free-form recipes and all of that
But I'd imagine it'll be quite limited at launch
Is client modding also java?
No client modding is intended at all
Erm, what.
All the content will be data-driven and server-side
Assets will be synced to clients when necessary
Look up the blog post lol
We know that:
- Server plugins are written in a JVM language (java/kotlin/etc. Your choice.)
- Server plugins are the most powerful supported way to do modding.
- Client modding is not supported officially. Client is native machine language.
- Plugins can define data. The game is data-driven. Most game logic is server-side.
- Client's job is mostly just player input, communication with server, and running graphics.
All of this is based on developer tweets and official blogposts.
Client still needs mod assets.
So I assume it'll download it at connection time. Sus for security though
Those are downloaded from the server, yeah. It's comparable to how Roblox does it.
I want to post the link but I can't because links are blocked. Go to the Hytale website, blog posts, and check out "Modding Strategy and Status" or whatever it's called.
Yeah especially for extension if not sandboxed on the client it could be a security issue. They are focused on security. So either we dont get to "extend" the game like Minecraft, but modify the event executions such as cancelation or act upon events. Either or.
will be curious to see how the RCE CVEs affect Hytale's popularity lol
if it's going to be ip-based connection + entirely server downloaded assets/scripts
Well I would love to see some proper infrastructure, relays, CDN, Security at its finest! But i doubt we will see any of that. Likely will be 3rd party of anyone does anything.
Then again if we're talking 50-250 per server I dont see a need for such, but would be interesting to see what people do. I am sure there will be some infrastructure nuts.
Scripts won't be downloaded I think. They'll probably just have a datapack-like system. I can't imagine they want to deal with the security implications of the alternative.
Well yeah, its unfortunately quite limiting but follows the Minecraft methodology.
Isn't a big part of Hytale is that it's supposed to be less limiting? Idk with the amount of modding I've seen they say they want I highly doubt it's like this
Otherwise the server modding is severely handicapped compared to MC, which feels like a step backwards
Well server development is free. Its the client side of what you can add and extend.
I'm curious to see how limiting it will be in practice. I don't think it will be as bad as it sounds, if they make enough mechanics data driven.
And if you need a new capability it should be possible to bother the developers to add it.
I don't think it'll be particularly limited if they're thorough enough with the client API
The server-side modding will be legendarily open, and that's the important part anyway for multiplayer
Assuming they're thorough enough with the client API, the next concern would be latency making the experience clunky
You want certain things to be processed on the client or it'll feel terrible
Oh yeah, that's another thing I wonder. I would guess movement is "client authoritative" in the same way that Minecraft is, but with server-side checks to prevent blatant movement cheats and such.
If not, even just walking around would feel awful on a poor connection.
That is server authoritative.
No manual networking results in a huge productivity boost and it stops plugins from inexperienced devs causing weird desyncs
Yeah, we've talked a lot about this one
If player movement is completely client-side, that's very limiting for plugins
Kinda. That's why I put it in quotation marks. The client is free to move, it isn't waiting for the server to tell it it's allowed to move.
The hope would be that the client API would allow you to send commands to help smooth the experience
Toggling client-side movement, or some arbitrary payload that tells the client how it should be moving
Hopefully something more than simple velocity/teleportation commands
That is purely client authoritative. If the server checks and fixes your location that is server authoritative.
Anything with server validation means the server is boss and client must listen.
I'm saying there's degrees to it, though. And vanilla MC doesn't actually do comprehensive checks.
You make it responsive by client prediction and reconciliation.
Client requests the server for new positions, in the mean time client is already doing such positions changes locally "hoping theybare correct" if not they get correct and reconciled by thrbserver.
Yeah, so ideally you'll be able to inform the client how to predict the movement, in circumstances where it has been modified
It would be nice if it works like this, we will have to see. I don't think it's been talked about in much detail.
I wonder if we have any sort of clientside prediction feature for plugins, it's kinda hard to do without custom code running in the client
Unfortunately, I wouldn't be surprised if there's almost zero prediction and it just feels clunky with some things
For EA, yeah. As long as it's added eventually I'll be happy.
I think so too, at least at first. If those issues are very common, I'm sure they're looking for some sort of solution
Easiest solution will just be some rudimentary prediction that is toggled on and off with a command sent from the server
Kind of like how Minecraft does so
If you get on a pig and fall through the air, your movement is not predicted
If you hold a carrot on a stick, it is
And you can swap back and forth while the server is frozen to witness it yourself
It wouldn't be perfect but it'd be a solution at least, and offer the flexibility of fully server-side movement with the responsiveness of client-side movement
For a company who has been the largest network on Minecraft I sure hope they would do server authoritative. It isnt hard to implement, it really needs to be architected this way from the ground up.
I don't think they'll let clients just send any position or movement data and roll with it, that would be super exploitable
You should always verify/sanitize what the client gives you
Like no more than a few meters of deviation, among other things that would keep it reasonable
It's just waiting for ping-pong is terrible, so you want to at least do something while you wait
Minecraft has a terrible implementation of server authoritative movement. Something you have to do a whole lot more to correct and fix. So logically you would just simulate movement.
Either way, adding new mechanics would require client side additions client auth or not the client still needs that data to send.
One if the main things here is Minecraft was not built from the ground up with multi-player in mind so they bolted on that system which is why its a heuristic simulation/auth. It takes guess within parameters (still is server authoritative but half way baked)
Either way it still sounds very flexible without client sided stuff.
Minecraft didn't have "LEFT RIGHT FORWARD BACKWARD JUMP" until last year π
Client does download mods just like you download a resource pack in minecraft. You only download assets and textures. "Extended mod logic" is handled by the server you connect to
What language is the server built in?
Java
100%?? Because the original code was in a fork of unreal engine
Never mind server can be in Java even if client isnβt
My bad
Unreal engine? Never heard about it in Hytale
Server works in Java 25 and Client is made in .NET Native AOT, meaning you can't decompile it with simple ILSpy tricks.
They took inspiration from Unreal Engine's visual scripting and detail panel layout. Not a fork though
You can start making them on launch day January 13th
I feel like people should try to think of what the limits are of Roblox in regards to what the limits are in Hytale
whatever can be done in Roblox, means that it can be sandboxed enough for Hytale to make it possible
This is assuming they go the route of Roblox. We still have no idea the extent as to how far plugins go and what they can modify.
I am saying that's the bare minimum in terms of safety/sandboxing
Oh yeah, I would be very happy if you can send over WASM to client. Natural sandbox and you don't run the risk of anyone jump out of the sandbox!
So apparently the Hytale team tried playing the game with player count of 56 players and only then did the game start to break apparently. Is that a big W for server owners?
and which test was that? i can not recall anything saying about "the game broke" in context of multiplayer testing
I reposted here reply from Slikey, it wasn't because of players, but server bug that spawned 3000 active NPCs
well they r still working on the server performance so it's fair to assume that it's going to get better
first entity clear plugin?
But just putting it up against Minecraft where performance can drop drastically just by having, what... 10 players ish?
Not sure how the performance drops in vanilla as I always have performance mods on and I rarely notice a drop
Try to put it against Minecraft < 1.9, it could handle 100s of players with no issue what so ever, it became problem only later when they intentionally degraded server performance in order to promote Realms, and their server is not open source, it's obfuscated and bukkit/spigot/papermc is hacking it
Fair point
The bug with 3000 entities was that server started spawning entities out of control in a loop, it wasn't intended
Technically the world record for most players on a single instance of Minecraft server is around 2k players so probably that's how it should be compared
I mean, it's difficult to say cause like everyone will have a different opinion on how it should be compared even after the game launches and I'm sure there will be people trying to compare these two games
I saw slikeys tweet about the "Last test with 56 players showed us some systems misbehaving and we had to discard the data". But I don't see anything about 3000 entities though
I posted link to reddit where he said that yesterday, before we start arguing about why Java should not be used anymore
ah reddit, don't use it
ah now I found the post from slikeu π
I am quite suprised 3000 entities hurt the server so badly to be fair. I read an ECS is being used which most can usually support 10 of thousands on a single thread and hundreds of thousands if parrallel.
It wasn't said it hurt the server badly, they just said that server started to misbehave when testing with 56 players, we don't know what happened, it might be slight TPS drop on some low CPU, I would bet they wont start testing it on high-end CPUs, so they can measure minimal requirements
To be fair, 1.9-1.12, at least according to my experiences, also still performed pretty well. Later versions, especially 1.13+ is where I started to seriously notice the resource usage was creeping up.
Wonder how Hytale's performance will be and if it's comparable to older or newer Minecraft
That makes sense, because I think since 1.13 the world height was also increased so chunks were larger.. I think we can safely assume that hytale performance will not even be comparable to Minecraft.. they had the best people working on it (like people who created optifine and also worked on some minecraft server optimizations), and it will be open-source, so if there is some thing that consumes a lot of resources, community can optimize it and send the patch
The first version we'll se 13.01 will be the worst optimized version ever, and then it will be only better I assume.. with Minecraft it was quite the opposite
The world height increase only happened in 1.17 didn't it? I'm not too well versed on the newer versions so not sure.
I'd be very happy if performance is on par with the 1.8-1.12 era or such. Because Hytale is still a heavier game than Minecraft based on how many features it has. Although I do believe they'll have proper optimisations unlike a certain other block game owned by Microsoft
Ah yes, 1.13 just brought new world generation system
Yes, everything should always get better from here. - Always an improvement.
Also with all the ocean changes in 1.13 I believe they changed some water physics and such which decreased performance even more. I cannot exactly recall what they changed specifically but server/client performance both took a huge hit
And then with increased height limit it got even worse. Curious how Hytale is going to fix this and if their larger chunks will have positive/negative impact
The more stuff they added the more it lagged. TPS and FPS
An untouched hytale server can def run twice or thrice as much as a minecraft...
The only bottleneck is the hardware
I stand corrected. The new engine uses Flecs ECS. The current legacy engine uses a home grown one that has been stated to run not so well. This is why, the optimizations just aren't in just yet.
I'm mostly interested in the fact they mentioned (don't remember where) being able to turn features off on the server side if they are unneccesary. That could save tons of resources for specific types of servers
wait... so are we able to start making plugins for hytale NOW?
They did mention that yes! I can't find it either
I mean I saw it somewhere but they are tweeting like 100 things a day so it's hard to miss
Yes this is very powerful!
Turning off many tick based systems could allow you to make mini games with the scale of hundreds at some point is my thought! Great for custom networks
Yeah hypixel has hosted 1000 players in 1 lobby before. Because all the features were turnt off except the ones that were needed
Maybe we can use CMD to pre configure for instances?
Something like Skywars could have so many features disabled correct, if that could run with very low resources that would be very neat
If you turn AI off, blockstate updates. That alone save a lot of resources
I am assuming a simple .json file but ye
This would be perfect for me!
Yeah there are a lot of things you could do. You can decide how far players and entities load and despawn
Well, yes and no.. you can make 1/2 of the plugin and then edit it accordingly when API comes out, I plan to do a few plugins (WorldBorder, LandProtection, some api for storing Currencies etc.) and they will all be open-source ahead of release (just with basic stuff like core logic and data saving), and when game is released, it will just be modified.. the sooner the basic plugins will be out, the less fragmentation there will be, we don't need to learn players to work with 10 different plugins for land protection..
Nobody knows any of the API, you could do the buisness logic, but anything such as events or so would have to be added after. Basically just writing the algorithms and that's it. π
That sounds like a neat idea, would be nice to have some standardisation upfront so the community isn't doing double work. Things like a rank manager would be cool too if it isn't built into Hytale already. Also world managers, easy way to create worlds ingame etc. The question is moreso how many of these are already in the game
I honestly think you can code something pretty neat day 1. Considering they got community servers in their trailers... and the server api is currently that
quickly someone make 2 tools. i have an idea for a server
mmo rpg and survival with custom items?
I will definitely be looking into that myself because it does seem very nice, even if it's just to try out tooling. But I'm sure with how early access the game is it'll be a bit of a bumpy ride originally. But hey, part of the fun is because of that
Yeah I really hope they don't break everything π
Just expect breaking changes.
Its bound to happen.
I'm 100% sure there will be breaking changes in API especially in the beginning. Running a whole network stably will be impossible but I don't think this should be your goal in the short term
I am ready LFG
My first plan is make C# interop. π
Mine a simple pvp server π
I'm definitely looking into setting up a small minigames server even though that will require some support, I'm not exactly a builder π
Personally I want to make a pvp server to test out the combat and play around with the api and once I am familiar and ready to build something big. I will invest money there
Oh yeah good idea, pvp will be amazing I'm sure with all those possibilities
Yeah. Lots of weapons and abilities per
Anyone tools or infrastructure focused?
I would honestly wait for something that allows me to create movable trains, planes etc
Once that gets released I am going all in
Not exactly, but that's definitely a major thing too. Things like lobby/instance pooling etc. would be very useful for Hytale
I need this blog raaaa
That's actually a thing I haven't considered yet. Spin-up time of a Hytale instance will be crucial, Minecraft instances on higher versions are terrifyingly slow and I very much hope this will not be the case here
Well HA is the technique to avoid that.
deadass I believe that you will be able to turn off literally everything and just use a transfer packet to connect to the real server
Well yeah there's other solutions but just being able to spin up instances dynamically would be more efficient and honestly also very cool 
You may have to do that though
Does anyone even know what Minecraft does that takes so long when it's booting up? Surely that isn't all world loading?
Plugins, server without plugins will be up almost instantnly
Well its likely to not take hours unless you have a wild amount of plugins. Plugin intake is usually what takes a long time, I heard one of the big networks took hours to boot up one instance.
Depends on how you define instantly. I've never really used any plugins that drastically slowed down startup time, even on vanilla servers that can be up to half a minute
To get around this, reduce the amount of plugins to load.
I thought half a minute is considered fast :D why is there need to do it any faster?
Though MC plugin loading i am 90% sure was fully sequential, 10% tells me it was asynchronous for like dependents.
Yeah for more custom servers I did notice that plugin loading seemed ridiculously slow even as plugins weren't doing too much. I hope this will be faster too in Hytale
How much will Hytale cost?
Likely not. Its is a reflection issue. It just takes time to allocate that memory
Hmmmm maybe I was exaggerating when I said it's crucial :P
But still, to me personally a startup time of 5 seconds vs 30 seconds is a large difference
$30? $20?
20$ base edition
Check announcements channel, sadly I cannot send message links in here
Hytale Prices:
Standart edition: 20$
Supporter edition: 35$
Cursebreaker edition: 70$
Is there gonna be a bungee esque system with hytale?
I actually spin up instances on demand with Minecraft servers anyway, and you can actually get the player in before the network timeout
So it's not too too slow
Unknown, it would be cool! If not I am sure many of us will likely make one
Hytale natively implements transfer packet from the start, so no need for a proxy!
That would be very nice
That's what my answer was going to be too, but Bungee does a couple other things too
I was bouta say. π
Inter server communication between plugins, it'll definitely possible for someone to mod in though
Oh thatβs already leagues better than Minecraft! Nice
Does this work cross proxy?
We don't have that confirmed, or even the transfer packet as far as I know
But they listen and they'll be adding it definitely lol, it's very useful
Yeah thatβd be nice to have natively
Iβm sure there are some workarounds that one can do where you host a service to cross communicate between instances
Oh nice
If I understand correctly, the transfer packet does not have any semantics for the payload, it just causes the player to connect somewhere else and send that payload on connect to the other server. It's up to a plugin implementation to actually define the content of the payload.
So there should be space for a project that does "simple transfer", i.e. that just takes someone's inventory with them, e.g. by stepping through a portal.
I wonder if hytale will have versioning support like Minecraft
That's actually so useful, extra data can be included too? I don't think Minecraft's implementation even allows that lol
They said no
up to 4 kb of custom data
4KB data in the payload. Plenty of data for an inventory and a signature
for anything more you should save it in your database and send a db key with the transfer
Definitely enough for references to one
They better have self updating server jars or smth (if they use jars for servers which I assume they will as they are using Java for the game)
I donβt think itβs Java itβs C
Server file is bundled in game so you can just pull it from there I guess
That would be sketchy
I wonder how they want to handle server updates
I was genuinely thinking it was going to be manual
No, nothing is coded in C
The server is Java lol
That's cool, do you use anything special to speed that up? Doesn't sound possible with modern versions to me
U sure? I thought they mentioned they were using Java or is that only for modding
C++ if you wanna be exact
I mean maybe
Still not, server is written in Java and it uses Java 25
Fair but lots of games are coded in C++ lol
New engine was supposed to be C++ but we're on old engine that is Java and C# afaik but uses Java for modding
Ah ok
Yeah but hytale isnβt lots of games ig xd
I just limit spawn chunks, I can check if i do anything else
It's unfeasible for modpacka without something like CRIU
I don't see the issue it being coded in java
Oh so they use Java for modding only
You can make server plugins with java
Basically the same thing. π
WWWW
For modding you have various options like blockbench, node editors etc. And visual scripting will come later
Yeah thatβs nice
Yeah haha
I wonder if Hytale will support pre-loading and caching the assets, like already turned into atlases and such
So then it's just copying it to RAM directly
Likely - This would be the proper way.
Whoβs excited for the pre-release? Iβm getting the game the millisecond it pre-releases
Minecraft modpacks don't do that so π
And it hasn't been mentioned at all
If your downloading the content, you should be caching somewhere to disk. π - It is the fastest and cheapest way to get the data. Games should be doing this, unless your streaming content which for this case wouldn't be very logical - Not that it is sure fire to be done, but isn't likely to be dealt as streaming.
Not just time but resources and money from the server.
Yup
A proxy is always needed. You def don't want all your eggs in 1 basket
Isn't a proxy literally an "all eggs in one basket" situation since it's a single point of failure?
No because you can rotate proxies
That's extreme measures though. Transfer packets are more than enough for mid to low player counts
They're caching in some ways for certain
But precomputed atlases and whatever other things they need? And whatever could be precomputed server-side
With Minecraft it generates atlases every time, and with modded servers even just recipes become a time consuming problem
Still a lot of bandwidth transfer
I dont see that as an issue. Becayse it is on join, you can re download and all. Assets can change, so I could see a reason to wipe or force update cache.
From the code berg leak I thought it was unreal cuz it was using epic games
I guess my guess by was wrong
That's a shame.. int64 would be much better, do we know it for sure?
It's showing me my account id on the hytale website after signing up
Interesting, my verification e-mail hasn't arrived yet
yeah i bet they have a mega queue for those right now
mine took about 10 mins and i think i was quick on it
Why is this?
Better for storage, Mysql/MariaDB has UUID type only in newer versions and even that is badly optimized, sqlite probably does not have it at all.. so it takes 36 string characters to store, which is 288 bits, vs int64 would take only 64 bits.. and per thousands of player records in database, it will make difference
With int64 you could still have something like snowflake IDs so even first ID looks like 1672531200123456000 and it does not start from 1, but at least people are familiar with UUID and it will be easier to port something from Minecraft
at that scale you can store it as two 64 bit int columns and give your users your own id for internal tracking
You can just encode and decode the UUID however you want for storing it in a DB
But even then, you're counting bits
Just don't forget to make that conversion table efficient. There about a dozen ways to screw that up
No third party plugin will hack it like this.. and almost every well designed service uses int64 IDs, even Discord, UUID was just a trend, some would say a mistake :D you rarely need 128 bits, you are fine with 64
yeah if you're at the scale where you're optimizing the storage space of user ids, you can hire a database engineer ^^
Those are expensive
exactly
I don't feel like doing that so Imma go the lazy route and regret it a few months later
Is int128 just not a thing in situations where UUID itself isn't a type
UUID is int128
Yes
we have 64 bit processors
Just get 2 64bit processors and voila: 128bit /j
I think decision to make it UUID was affected by fact that they have some common object for representing an entity, so entities have also UUIDs and they wanted to make it more compatible when storing data
Are databases normally limited by this fact?
Even if you store the UUID as VARCHAR(36), the additional storage is 30 bytes per record. You will only start feeling that in the 10s-100s of millions
DECIMAL(39,0)?
Would it be more efficient to store it as varchar(32) while removing the unnecessary dashes?
technically? not noticably though
then your trading space complexity for time complexity
In what world are you not going to be able to handle UUIDs π
What about storing UUID to internal (server-only) ID in memory+in DB then using internal ID for databases?
Worst case (offline players) it's an extra DB lookup, but for most cases (online players) it's just a memory lookup
But this is probably overcomplicating it by a lot
I don't think it's that much of an overcomplication. Just do the look up when player joins and keep it for as long as they're on the server
This is all optimization for database access that probably won't even be close to a bottleneck or even measurable, is it not?
the single best way to store a uuid is with 2 int64 fields (which is what postgre uuid type does under the hood)
Depends how many times are you planning to call the database to retrieve or store data
Postgres π₯³
of the modern database engines, only sqlite doesn't have a way to efficiently handle uuids directly. and nobody would use vanilla sqlite for 10s-100s millions of users
who seriously uses sql nowdays anyway pffft, nosql is the future /hj
I thought sqlite could store them just fine as binary
The best nosql database is chatgpt, you just tell it via api what to save and you can later ask about it also in plain english, no SQL headaches
yeah you can store it as a BLOB, just a bit more fiddly since it needs conversion logic and isn't human-readable
blobs have slow lookups, which isnt great for an identifier
Is it actually slower to lookup the UUID as a blob than a string?
no, its slower than using 2 int64 types though
Yeah that makes sense
But then imagine that someone wants to do some edit in that .db file, so he opens it and sees 2 integer columns or 1 blob column.. it's just better to store it as a string with all 36 characters and accept the fact that it will be little bit slower and file will get larger faster
I don't see how storing it as a string is better than storing it as an actual blob of the data
Which can just be displayed as a hex, which is how the string would look anyway
its not 2 integer columns, its 1 uuid column
Also, isn't it a moot point? Why would you design your database around manual editing
theres that
You always want to design database as simple as possible, you never know when you'll need manual edits, all sorts of bugs can appear and you will want to check what's inside the DB
I have never imagined I will be editing chestshop sqlite database, but I did edit it like 10 times because of few bugs with wrong/duplicate UUIDs
Once I stored UUIDs in MariaDB as BINARY(16) (back when they didn't have them) and I used it for IDs.. one of the worst mistakes I ever made.. I have never used UUID since and I wrote few UUID => INT migrations that were running for hours on a few projects..
I think working on the assumption that you won't be able to support a UUID, after they've been around and standard for so long, is a strange assumption to make and worry about!
I think if you ever get to the point where your db lookups are the significant problem, it's not going to be due to the number of bytes in your user ID
You always want to design database as simple as possible
not true in the slightest
you design it to suite your needs, for the purpose of this debate, the requirements are fast and storage efficient, so strings are not the solution
I wrote few UUID => INT migrations that were running for hours on a few projects..
sounds like a skill issue tbh
i can migrate a 300k document mongodb collection in a few seconds
I was migrating billions of rows, you have to first remove all FKs, freeze whole DB (no reads/writes) and then swap IDs and replace them where they are used
I can only imagine how long it would take if you used strings instead π
This statement feels like it lacks a bit of understanding. π
NoSQL is good, but SQL is great for many reasons, main reason is its ACID property. But also complex relationships.
Neither is better, each built for complementary reasons.
Example, video games use SQL quite often since everything in a game is usually very rigid, but also is very fast due to that. But NoSQL is also just as useful for application of redis maybe in the case of a online card game, you can shove a gamestate which is fairly dynamic.
I dont think you could ever rule one out. π
with nosql you dont have to worry about injections
Correct! Its because its not SQL, but rather a "NoSQL Injection".
I cant get SqlInjections if I dont use SQL Sounds about right
We have solved XSS, just don't use SQL, ez pz
Why bothering on sanitazing user inputs, just ask them to send you a letter over mail and input those manually
True! You can't hack yourself
Or can you!?
I know the solution! Just dont be myself!
I just let them fill the query. Why bother writing mine?
I feel tooling debates have gone on for years. π Unity vs Unreal, Java vs C#, Sql vs NoSQL. π
Added: AI vs No AI
Nobody wins! π
Just use whatever benefits you
Just for you, I am going to write my player position to a json file, zip it up and throw it onto ABS.
But then make a record in an SQL db to point to that, in which that record is stored in a .log file in a no sql db.
I dont understand why people dont do this. π
Btw how are you going to store your logs? I was thinking txt files
Db might be overkill
Jokes on you, I use PLayer Position as PK so I can index those faster /s
I am glad we use all of our tools to the best of our abilities. Why fight for one when we can fight THEM!
You could use txt files as long-term/archival and db for daily logs. That way you can query and quick access information about the day, and if you require to check old logs you can always load them into a local db and check them there
I think a directory, then a txt file holding one log line should do fine.
Oh see i thought that was playing off of my joke... You have a real response. π
I don't care about reading them on live so txt should be ok
If we go that route, create a Microservice for login where you will have a redis for instant log of 1 record in cache, after that you will print that into a directory in Azure or AWS so you can access them real time no issues (text format for the best), finally you will transform that into a JSON format to archive it into a big excel file that every time you need to open it it will take from 15 minutes to ethernity.
Best loging strategy FTW
This is feel is a bit to optimized for my needs unfortunately.
You can always switch from Azure to Sketchy Russian Cloud provider for the best deals
You can totally write out to a .log as well. Its a text document is all. π
Ah see, I get that required 300ms latency, that is exactly what I needed. Which its reachable of course.
Storing logs is for babies, you don't need logs /j
Yea just let bugs happen πͺ
What bugs? Those are clearly features
Hell yeah
If your app hangs, that is just a que for break time!
Tis but a text file π
I can't send gifs... π - I LOVE THE REFERENCE!
I will store my logs in a TOON file
GOOGLED: "What is the wildest thing you can store a log file in"
Googles AI
The "weirdest" method is subjective, but here are a few unconventional and bizarre ways you could theoretically store a log file, ranging from the obsolete to the absurd:
Stored as synthesized DNA: Log data can be encoded into the base pairs of synthetic DNA molecules. This is a real, cutting-edge data storage method with incredibly high density, but storing a simple log file this way is extremely unconventional for practical use. Etched into a physical object: You could program a CNC machine or laser engraver to physically etch the binary representation of the log file onto a non-traditional medium, such as a river stone, a piece of wood, or a glass pane. On a series of punch cards: Reverting to 1950s technology, you could output your modern log file onto a long stack of IBM punch cards using a keypunch machine, making it bulky and difficult to read without specialized equipment. As a series of tweets on a "dedicated" Twitter account: Each line of the log file could be formatted into a short message and posted sequentially to a public social media account, turning a private system log into a public, chronological feed. Encoded in a physical knot system (like Quipu): You could hypothetically devise a modern variant of the ancient Inca quipu, using different colored strings and knot patterns to represent characters or bytes of data.
I am satisfied with these answers.
That twitter idea, I think has some potential! (You may get a large following)
lmao
I mean, that Twitter idea could be used for some lore stuff. Imagine you're just sending tweets every 5 minutes and it's like you're booting up a server
"Player123 flying prohibited"
"Player123 banned!"
Twitter replies: "OOOOOOOOO, HE IN TROUBLE"
^ Yeah this is all I can think of now. π - Can we just get anticheats to live broadcast? π
yep that how it goes with twitch bans lol
Has someone benchmarked a hytale server? Does someone know the system requirements for a hytale server?
Unable.
Hope will be better than Minecraft
The team is in the process of benchmarking right now
Last we heard, they had problems at 56 players because the server had 3000 npc on it
Already looking to be. Sounds like their test had 56 players but I heard from somebody here that it misbehaved due to 3000 NPCs being spawned.
Yeah that above. Ignore this
Lol do you know why the 3000 NPCs spawned and how many RAM or CPU for a 56 players. I hope the servers are not written in Java 
The server is written in Java
They are in Java
Oh
But that's not a problem. Also, the server software code will be shared-source. They said you could port it in any language you want. Some already want to port it to Rust
People often blame Java for being the cause of all performance issues, but that is only half the story.
Okay sounds nice. I like it
Here's the tweet from yesterday by Slikey:
The server manual is coming in later than expected as we are still tweaking some performance issues on high player counts. Last test with 56 players showed us some systems misbehaving and we had to discard the data. I hope that tomorrow we have ironed most things out and get a more stable idea.
The Java connotations are not accurate. Everyone had the thought that it sucks because Minecraft did a terrible job writing their servers. π also old versions.
Java and C# can get close if not as performance (in some cases) as c++
Indeed. Plenty of servers (game or not) run on Java just fine.
Hope we all get that C performance ^^
Does anyone know in which language we will be allowed to mod?
To be fair when they originally built Minecraft they probably didn't expect hundreds of players on one server.
(They could have revised some design choices in the long run though)
I grew up with your hosting to be fair lol
Correct. It was built as a "friends" server and was even hacked together and was not implemented correctly.
Java
Can't really blame Minecraft for how they started off. I mean, that was also 2009, lots of things changed tech-wise since then
Server will be shared source so you can write your own if you send correct packets to the client
You can use Kotlin for writing plugins if you like. As long as it runs on the jvm
So this means I could technically implement the server in python although the performance is terrible
Yup
I mean, generally speaking Python often performs worse than Java in benchmarks
All you have to send correct packets and update it with newest updates
Game server in Python would be a... Novel idea for sure
yeah totally agreeing
So how much is 56 player server in nitrado
python is not meant for those things
Eve Online runs the most complex and largest MMO single Shard world on stackless python!
but would be nice to allow scripting in python
At 1Hz baby
Slikey explained in the modding blog post why text-based scripting isn't worth investing development time in
Its quite a feat!
Sure, you just gotto first write the server in Python and do all the work that several full-time devs of Hytale have built over the past couple years by yourself, just in Python instead of Java :p
Just use AI duh
this is a joke
Well I do. Its not really that much of a joke π
"Yo Chad, write me a Python Hytale server. No bugs pls."
We're currently revising some aspects around Hytale pricing with some of the learnings over the last few days. We're sure people are going to like the result, I'll say that much.
Some guys are rewritting MC Servers in Rust I think this will revolutionize the mc server
dayssincelastrustmcserver com
Gang let's do Hytale in Haskell
Nim?
Say when are we going to make the end all be all ultimate language.
yeah it's a pain to get all the circuits to emulate the minecraft server jar in the game Rust, I don't think Garry Newman intended for this to be the case
Let's go Assembly, it's gonna be real performance difference... it might take a few years, maybe a decade or two... but it's going to be fast and that's what's important
Asm script for plugins?
Punchcards please
By the time you're done, they've already made a few updates that break everything
Having to reimplement Quasi Connectivity is something lol
Are we just gonna go back to carving in stone at this rate? Get the rock bottom speeds
Gosh darn it... alright boys... it's time to start over again...
Cooooobooooooool
Sure why not
Okay okay WHAT IF we take the java code, compile it to Java Byte Code, and then use something to just translate that to assembler for us, depending on the host OS?! π§
So just AOT?
Oooooh, I know what we can use. Let's use AI
Sshhhh
How many of us are gonna be pumpin out plugins with AI? π I sure will! π
Likely not many. Maybe just one π
I won't π I will be keeping creations to myself. π Mine! Mine! Mine! :insert_finding_nemo_seagull:
I think this might be harder than you think. I mean AI has to learn Hytale API and all that but I have also done this with MC
If you ask any AI unaware of Hytale to create plugins for it, it will probably start spitting out PaperMC/Spigot code
"Ohhh I think you want an ItemStack for that!"
Well, if you ask me questions I won't know I will likely spit out garbage to! π
I am assuming with docs and references.
"ItemStacks don't exist in Hytale!"
"Apologies, you are correct. ItemStacks don't exist in Hytale. Instead, you should use an ItemStack."
even now with minecraft if you try to ask ai to write something using fabric api or mixins it flat out sucks and probably wont compile
idk how stable paper api is but i dont imagine hytale api is going to be stable any time soon
I asked it some questions about PaperMC's bootstrapping phase (Paper plugins), and it just gave me total garbage. Events that would hook into the Bukkit event system that didn't even exist.
"You are completely right to point this out! Situations like this demonstrate not only your supreme awareness of your programming environment but also your unique intuition of the foundational principles of software development!"
Hmm, I haven't had these issues. I had AI (Well granted I likely don't use AI like most people assume) - But was doing some bytecode injection using AI to alter another plugin. - I find AI to be very accruate given you know how to talk to it.
ive had it completely make up a mixin injection on me which was super funny, tho that was back during gpt 4 probably wont happen with 5 unless you convince it
What helps is telling it that it should browse the internet, or even give it a link to the docs page of something.
Then you get the collective hivemind of Stackoverflow as answer back. So it probably still won't work.
Oh yeah, this is the way! π Also what really helps is to tell it the architecture, cause it has stack overflow on its side. π But it doesn't have a brain
Pluribus mentioned?
Just telling Copilot to "tell me the caveats of your solution" causes the agent to go "oh wait, that doesn't even work, let me redo that..."
To be fair, if you ask ChatGPT to browse Stackoverflow to find an answer, it will just give you back "that is such a dumb question. Downvoted!"
i mean in certain scenarios like super easy head injects or whatever AI will give you something that works but from my experience it cant even count ordinals properly. trying to use anything that isnt a simple inject usually doesnt work
tho if you understand the basics it can do a fine job at explaining implementation details, but i can never trust it to actually write for me
Tools like Junie are nice, I sometimes use it if I can't be bothered creating boilerplate stuff. I wish you could easily interrupt Junie though, and give it some new instructions or hints if it starts going the wrong way.
Hmm, maybe. I haven't really had many issues with AI, it usually gets what I need done. Like currently I am making a multiplayer TCG, AI has generated the boilerplate first try! - Using my custom libraries and all. - I don't let it write my code, I usually just copy and paste. Keeps me familiar with the source.
But I find it pretty reliable!
havent seen anything about junie since it was in closed beta, didnt even realize it was released
but man is that expensive
It comes for "free" wit the "all product pack" license
Well for like 2 messages. π Then you gotta spend the $300 plan to get somthing remotely usable. π
Yup, hence the "free"
classic
I don't use it enough to hit the rate limits. I mostly rely on the AI Chat or ChatGPT and write a proper prompt giving it all the background knowledge it needs. Quite often it will then come up with an actual reasonable solution to complicated problems.
Yeah I pay for Claude 20X Max.. I use it for work, and for personal. - My job encourages us to use AI for the producitivty gain. Takes a lot of the annoying and tedious stuff of and allows me to design and architect big systems a lot more often.
hope hytale has its own IDE and built in chatbot, gAIa
Can't wait for the Hytale community to train it! Nothing can go wrong!
There's actually a solution for this, it's called RAG. Basically you search for relevant context in your database and feed it to the model, but that requires some engineering
yeah but the average person trying to use AI to write hytale plugins off the rip is most likely not going to be able to do that
I guess granting an AI access (e.g. via RAG) to the Hytale docs and Javadocs might make it somewhat capable
But even then, unsure if that would be a wise idea. Most of us are not so familiar with the Hytale API right now (slight understatement), learning how it works first might not be a bad idea. Though of course AI can help you in the learning process
yeah most coding assistants are better at being search engines for docs+code than they are at being coding assistants
This is perfect, I feel using AI you still definitely need to understand what your doing and looking at, but I can get personalized docs to my direct code and usage in < 2minutes rather than search for generic implementations for 20 minutes. π
Yes, using it to help you point in the right direction is what I use it mostly for. I mean, when Google was new, plenty of people were like "oh no now everyone will cheat on exams and such" and now that we have AI tooling people are like "oh no now everyone will cheat on exams and such". In the end, it's a tool, not a replacement.
yeah i always say "AI wont replace programmers, programmers who use AI will replace programmers who don't use AI"
Pretty much
Well, even then "replace" is a big word. More like "be more productive and thus be more attractive for employers"
Being able to properly use google and stackoverflow back in the ancient times, 2 years ago, was also what set some people apart
Yeah, I don't think AI can replace. But it may reposition "programming" in some ways.
Its like using a calculator vs doing the math on paper. Which are you opting for? π
jeffr did you used to work on the tooling that would parse the obfuscated decompiled java in pre-bukket era minecraft modding? there was a jeff back then but i only barely recall who was around in those days
Oh no, I am not that old
ah okay -- i am lol
I only started doing proper Minecraft plugin dev stuff around 2019-2020
ah, i started a few days after SMP was released haha π
I am still involved in a relatively old server, but mostly to keep the lights on. Most of that stuff is built on the top of the giants of their time. Back when Bungee was new and all
So the game it self is C# or C++? My friend keeps saying C++ and people here say C#
C# for the client, Java for the server
It was C++ on the new engine, maybe that's where the confusion comes from. The new engine was ditched for now though
When u say client u dont mean the launcher do you?
No, the client, the thing you play with
ye ok cheers
So who of you lot is building a plugin that would have a web component, in the sense that the server would need to be reachable via HTTP?
me!!
Embedding a HTTP server in a plugin is quite useful, to act as a Webhook for example. Definitely will have a need for it.
I will definitely install a dynmap or similar as soon as it's available
Tell me about it π₯
I have a few things I wanted to look into
Event boards, world map, user-uploaded paintings, a chat bridge will be among my earliest projects
Though I realized a bit later you could use in-game commands and third party image hosts for paintings
For all my game servers, I have automated startup and shutdown
And where possible I have chat bridges
Reason I'm asking.
One of the worst nightmares for a server provider is a bunch of plugins all opening their own ports and own little web servers.
So what we will very likely do is to publish a general web server plugin that other plugins can register routes to, with authentication working out of the box, for both user accounts and service accounts / api users. We are going to need that for our own functionality anyway so might as well publish it.
And then there are going to be outliers that just will ignore this but will have thousands upon thousands of downloads
I just finished my backend for Hytale/Discord store integration and went with a classic RestAPI setup π
Can never prevent that, but we'll still do what we can.
I would've been shipping my own with a toggle for it
So I'd imagine that's how most would do it
Nginx with all the web servers toggled off
What would you say would be the way to communicate to the βWebhook Pluginβ? A Rest API where all the other plugins can send the info? Or a βlibraryβ that requires a Webhook βserverβ to configure so plugins would require to import said library
Probably a library containing the web server, and some API of that library that you can use to register new endpoints with a handler on.
some shenanigans like httpLibrary.use('/some/path', MyRequestHandlerClass),... i haven't touched java in like 10+ years so i don't really remember the paradigms/styles
Yeah that's basically it, but the library is a standalone plugin, so you don't need to ship with that library, you have it as a dependency.
So multiple plugins can all use the same web server and exist next to each other, as long as they register to different paths/routes
Library plugins are definitely the best choice for this, but that's rarely how it goes
Wouldnt that start a webserver for each plugin? Or do you mean a Webserver instance that communicates directly with the Webhook Service
And if your plugin isn't open and licensed properly, nobody is going to touch it
We certainly know that
A single webserver that serves the various pages
1 webserver that routes to the correct plugin, think like how express works
so the core plugin would be mostly routing and registry logic, and then all the actual things are over in the consuming plugins
handling collisions elegantly would be nice too, maybe you can prefix with the requesting plugin but i dunno if that info will be available programatically and may just need to be a best practice thing
Yeah, thin line to walk between giving plugin users the freedom they need vs. intercompatibility
so like if the MagicCarpet plugin registers a handler on /update, the full external path would be MagicCarpet/update
Prefixing would make the most sense, its also how Minecraft solves ID conflicts using a namespace.
[note making noises]
Yeah, people will probably be even more hesitant if you're as corporate as you seem LOL
Thing is, if we would actually screw something up, people could just flip us off and fork the repo. The beauty of open source
That's at least the plan at the moment. Hope everything pans out π€
better yet, have reasonable contributor policies and be open to pull requests and make architectural decisions in the open
"we made thing for you" always goes over more poorly than "we're making thing, come help us if you want"
Exactly the reason I asked you all what you're building
Hello
part of hMod's success was because we did everything in public IRC channels and anyone who wanted to make radical changes could suggest it and 90% of the time we'd be down
Is Tebex working on a hytale plugin?
I received a mail from Tebex stating that they have support ready
Tebex.js integration is cool, did not exist before with free tier you have almost everything
Tebex was going to be what I used. But I decided to take it with discord App store and see how it works for a hytale server
- Event boards
- World map
- Market trends / bidding (in-game economy)
- Sending chat messages
- Remote management (admin)
Basically, anything a user/admin might want to access from a phone lol
A store plugin will probably be a thing that people want as well, but I don't really worry about monetization with my projects
Lol a ban appeal plugin could also be done with a web server
Ahh would be cool if the ban message when joining the server could Hyperlink directly to the ban appeal link. Would be a clean way to point "bad" users to the appeal page without needing to get staff/discord messages for it.
Oooh killfeed websocket for PvP events
I'd imagine most modern ways of handling ban appeals would be chucking them into another dimension and informing them
I've seen some things where they put you into a mine and have you collect coal or whatever for a few hours LOL
That is actually a EULA grayzone bypass they are doing. Cause they add purchases bypasses there for unban
There are definitely ways around using web servers for those features, but anything that could be preferably handled outside of the game are valid uses
Honestly from a RPG perspective, that would be awesome, instead of days of ban, days of hardwork at the mines
That is incredibly idiotic π
I thought it was just a clever choice
That's genuinely what I was thinking
Still decentivizes cheating, but doesn't kill your playerbase
Nope. They have "Purchase coal packages..etc." and you buy that as your unban. Its a pretty scummy activitiy servers do to bypass the unban purchase
Increases closet cheating by like 800%, but that's arguably fine
Oh, it's like the coins thing they do too :|
Its a sad MTX world we live in. But sometimes you gotta game the game right? 
Voting plugins are a thing on Minecraft
Hopefully we won't need them on Hytale though
I don't think they talked about it, but community ratings for servers would be cool
Honestly anything that can buy you a Ban appeal is just "Hack until you cant longer afford the Ban Appeal"
thanks for the idea β€οΈ
I think the basic of my server mtx is going to be a vip tier. Beyond that probably not much else at first.
So a global vip role in discords with my bot (Private bot)
Discord: Bot assigns "VIP" role immediately.
Game: Bot sends signal to Game Server; Player receives "Thank you" DM.
In-Game: Player's name turns Gold immediately (or on next login).
ez pz lemon squeezy
That would be pretty neat but as well not good for new servers, if a rating system enters Hytale, only known servers would be at the top and new servers would get at the bottom. Something like what steam is working on would work, discoverable servers not only based on the Rate of it
I hope we don't... People can bot these things
You'd have to purchase a lot of Hytale accounts to do that lol
They also pay to be top servers in list. So its a double for any server with money to spend
A good sorting feature is more than enough. They can spice things up by creating an algorithm that recommends servers based on what u play
That would be interesting actually
Tags alongside an MOTD and whatever other metadata
Oh yeah ofc
Tag based sorting would be QOL as well.
We are adding minecraft's name colors already
Sort by players would be catastrophic because you can bot it...
They could just remove those from the public listings
I prefer a tag system over just name colors from mc. It allows a lot of customizations for players.
What does MTX stand for?
Microtransaction
We know it got both
I want to stick on cosmetics more than whatever they give in mc servers
There's a screenshot here (concept)
https:// hytale com/news/2019/1/an-overview-of-hytales-server-technology
Same things they say now lol
Yeah it's from 2019 aka the build they are currently using
I've been ignoring everything they posted previously
Should I not be?
Not everything, they are using the old engine
Ignore things like mobs and behaviour, infrastructure is the same
Do you know when they started the new engine specifically, was it 2020?
Slikey recently shared they are using upnp for coop
That is a strange decision
Does UPnP even have proper support on most networks?
I think the core build is late 2018-19 but they are using features from newer versions too
I think its time to go back to early day mc with hamachi π
Good hamachi days
Hamachi..
That's a name I haven't heard in a looong time
I figured they'd have a first-party tunneling service of some kind, if they were even going to try a friend invitation thing
If you think about it, Tailscale is modern Hamachi
Yep
#JustUseCoturn
All they need is to exchange IPs am I wrong?
The keyword is hole punching
You'd need to open the server port to the web
What's upnp then
UPnP is a system for opening them on demand, but I have literally never seen it work successfully
Universal Plug and Play is life
It's been a long time, but I thought it was a virtually dead and unsupported technology lol
Every router I've had hasn't been able to support it
STUN/TURN is basically the standard for all this today.
what does essentials use?
They said its what theyre using initially, but that they know it's not universally supported so are looking at their options
Hytale is a bit outdated then
Most modern non ISP's routers have it disabled.
Comcast/Xfinity and Cox have it enabled by default last I used them.
Yeah, my crappy ISP combo box supports it lmao
So I asked gpt about this and it says if ISP is blocking you, you need to buy static IP
LOL
No lmao
I'm gpt's liar
Um, you should probably not be asking whatever AI that is about anything technical
Static changes literally nothing about ISP blocking....
Why does it block
Every single part of that is just wrong
Some ISPs will block ports for "security" reasons
They don't trust you to do anything, and if you want to be trusted you have to get an enterprise plan lol
ISPs dont usually block anything like that (Minus a few special cases) and they def dont block UPnP as that is local traffic management
Lots of ISPs will block HTTP, DNS, and mail servers
An ISP can block UPnP if they want to, by simply not allowing traffic outside of 80/443
Mine did so I tunneled the connection. My new ISP doesn't luckily
That's what it said
Even if the game uses UPnP to automatically open ports, some players still canβt host servers because their Internet provider uses CGNAT (Carrier-Grade NAT).
With CGNAT:
The user does not have a real public IP address
UPnP opens the port only on the local router, not on the ISPβs NAT
So outside players canβt reach the host
Result: Hosting fails even if UPnP is enabled
The only fix is:
βοΈ Get a real public IP (static IP)
When the ISP assigns a real public static IP:
CGNAT is removed
UPnP and port forwarding work normally
Players can host servers without issues
How to check:
If the routerβs WAN IP = external IP β OK (public IP)
If they are different β Still behind CGNAT β Hosting wonβt work
Thats not blocking UPnP. Thats blocking eveything
Can I introduce you to my arch nemesis, carrier-grade NAT.
I saw people having different public IP addresses depending on whether they used TCP or UDP
They can still block UPnP if they require you to use their hardware
And then don't have UPnP enabled on it
I mean I guess you can say that lol
You could spoof the MAC with your own device and get around that, but they could just bludgeon traffic with the method I said previously
You mean the IPv4 is out of space. So here is your shared address haha
This is by the way how I learned how many truck drivers have a gaming console in their truck because they all use AT&T mobile
I dont roll critical 20 nats. I roll NAT444 π
So wait how does this work? Is this just the technology behind the standard tunneling we see around? Or is it something different
I couldn't tell from just reading the wiki page on it π
It's all messed up. Some do nested NAT (so basically your router is part of another private network which is then bridged to the internet), some do IPv4/IPv6 tunneling, often broken (hi Vodafone), and none of it standardized, every ISP builds their own weird solution
Oh π that's nice
Yeah welcome to my world, lol
Looking good
I hate reading Nitrado each time you message. Gives me PTSD flashbacks of Farming Sim25 LOL
Bad experience with the servers or did you just not like corn?
Nitrado was fine. Just FS25 bs hosting software
Are you a big player at Nitrado? It sounds like a lot of people have heard of the service
I would use Nitrado over Gport and Gameservers usually. They are pretty well known
Lead Architect. Not sure if that falls under "big player" for you
That does sound pretty big LOL
How long did it take for you to become a lead from a dev? Just curious π
Why are architects playing games? Shouldn't they focus on building? pfft
@vernal niche I'm sure there's a lot of questions in relation to your job, but is there anything gameplay wise related to Hytale you are excited about?
Nothing I will say now will be useful to you because my job title never fully fit my role, because I basically always just did what was required at the time. My de-facto role changed multiple times over the last two years, but my title didn't.
We are way less corporate than most people think, job titles don't matter that much to most of us
What do you architect? Specialization?
βWeβve partnered with Nitrado and Apex to ensure Hytale servers are ready for players worldwide from Day-1-minute-1. Weβve trusted Nitrado personally for years, and that great experience has continued professionally, while Apex brings a strong track record of reliable game hosting at scale. Both partners have gone above and beyond our expectations, and weβre incredibly grateful for their collaboration in bringing Hytale servers to the communityβ ~ Patrick [Executive Director] and Kevin (Slikey) [Technical Director], Hypixel Studios.
This is interesting, I couldn't find the source though
Does this mean you know a bit more about the server requirements than the public? Or are you not even allowed to say that much lol
Ahh thats the kind of company I like
In internal meetings I've coined the phrase "Hytale is not a game, it's a platform." The whole modding as a first party supported feature excites me the most
I'm excited for it to be both LOL
I was surprised when they said their focus was on the base game though
A game as a platform is pretty useless if the base game is bad (at the start at least)
The fun thing is that what we write is basically deployment software. So on the game server hosting side you can't really make the distinction between infrastructure topics and pure software architecture. It's all one blob.
Yeah we're partnered with them and try to contribute to a successful launch. But sharing details about the game is still a privilege that the Hypixel folks should enjoy.
Yeah that is my experience as well.
It's definitely not useless if you have all the features you need for development
I figured you can't share details, but do you know details ποΈ LOL
I don't understand this. - "Bad" is subjective in the first place.
I know a lot of things. That's my job π
Well if there's no gameplay. Simon has talked about it in the past: Who's gonna mod your game if there's no game in the first place? Although in Hytale's case, they actually have a community so there's that at least
Will we see you play Hytale?
I really hope you don't come to my house
Kind of amused by his presence here at all
I'd imagine there's personal interest
Could just be seeing you play on Discord π
Could be beating his ass first-hand in Bed Wars π
He'll go on the server and disconnect you personally
Is this not the entire point of modding? - If there is no gameplay it just allows modders to go ham.
Roblox is a perfect example of this.
Why is there like 3 other games like hytale releasing or already released a little bit ago.
Advertising and yt shorts blowing up with everything but hytale lol
Because everyone jumps on the hype train
Thats fair
Do yall remember the Battle Royal phase?
Now my wallet is shaking a Lil, but im holding out for hytale lol
You're right! Roblox is the perfect example. But I would think the lack of players compared to Roblox could make the difference. Had they not had a game, I doubt most people would be interested.
Hypixel focusing on the game lets them dogfood the modding tools and market the game
Honestly I believe there is wisdom in taking the modding tools you have, and building a (base) game with that, instead of endlessly over-engineering the platfrom. dogfooding and all. Tells you what the platform actually needs, and gives the community something to play and get familiar with while they're building their first mods.
Remember the Hunger Games phase?
basically what that guy said
That is if they are actually dog fooding their tools. - We have seen them use their tools a littel bit but it is nothing like Vintage Story or Factorio who build there game using their own modding frameworks
Hytale the game is made completely with the modding tools
We're building Hytale with modding at its core. Most of what you see in the game can be changed, extended, or removed entirely. Blocks, Items, NPCs, World Generation, UIs, systems, and behaviours are all driven by data and code that you can influence.
They have stated that you could remove everything they did and make a completely new game
I've put my Godot and roblox projects away as soon as Hytale was brought back haha
This does not mean they are using their tools.
They say they do...
Do you want me to go in every employee's home and verify π ?
6.1 Integrity. We implement anti-cheat and integrity measures for the Game which are primarily server-side, with limited client-side telemetry. We do not deploy kernel-level anti-cheat.
Do you want to?
I do remember this
As mentioned, it's not my position to speak for the Hypixel folks, but let's just say these folks really know what they're doing. You're in good hands.
Not really no, I'd rather play Hytale π
Now I cant trust them. A guy just told me to trust them
Should have known that the guys that started by making the best Minecraft maps and then the best Minecraft server knew what they were doing π
I think the fact that it's all data-driven is a pretty good sign that they are
I hope so!
Even if they're not using their own tools
With data-driven and shared-source, you'll be able to get an extremely far way
I was preparing some long text what pitfalls around networking they should be looking out for and then I saw the transfer packet and deleted all that text π€£
They were one step ahead? π
As said, they know what they are doing π
Well they've been dealing with that garbage for so many years lol
Bungee and all the proxy things we have in Minecraft are a literal nightmare to work with
I still think its funny to see people join this chat to ask how optifine will be made if no client access. For everyone to just say Sodium guy works for them.
I know I could read up on it/ask AI, but what do transfer packets help do exactly? To my understanding, they somehow help connect multiple servers together to get a sort of lower ping? Why would that be something Mojang doesn't implement for Minecraft? (You can also just tell me to go read up on it)
I don't understand this. Are servers allowed to use these client-side telemetry or is it for hypixel studios only?
Mojang implemented it way later
Well, how will I get my cheats if I can't mod the client?
Easy/ wait a few weeks and someone will have one that steals your discord token too!
People can forge their packets (This is not my advise!)
So first of all, for the bungee case, you don't need that extra infrastructure, so that's nice.
But also, if you have a "transfer" you can also implement that as "redirect" and that opens a giant world of possibilities.
It's not necessarily to get lower ping
The way you connect multiple servers together in Minecraft is by connecting to a proxy which can move you between "dimensions" in a hacky way
And these different dimensions are actually entirely different servers
With a transfer packet, you don't need to do the hacks or require a proxy
You can just send a command to the client, and force them to connect to a different server
I am going to cook with this little transfer packet
I'm still thinking about what if you loop between two servers or do you have option to cancel transfer
Im going to cook with it after someone else does and has an Open Source code I can view to see how they did it! 
Would transfer packets help in something like a huge MMO with a single world separated in "zones" or something like that?
I don't think that'll be much of a problem lol

Yeah
Yes, absolutely
You could use this to manage and distribute the load
Ah well I see why it's interesting then
That's what Slikey said π
If you wanted to have 20,000 players
You'll need multiple servers in order to hold them all
And pooling these players and spreading them around will be an important aspect of managing that many
I wonder how making a replay system in hytale would work. Since we don't know if we will have packets
I just didn't follow that part idk
I wonder if instanced based loot drop pools can easily be added to the server without a overlift of the server source.
So would we have to implementent that "redirect" our selfs or is it something Hytale is going to support day 1?
You would need 358 servers to be exact. With a rate of 56 players each server at the moment
How do you mean?
56 isn't the limit, it just happened to be the size of their test
Yeah ik
ssssh, Nitrado will take all your money π
I imagine you could write a plugin that just sends that packet. Say a player interacts with a portal and that triggers the plugin to redirect the user to a different server.
Not super familiar with the details though.
Does nitrado have crash detectors and auto backup mechanisms for this
The thing that I'm mostly wondering is whether or not the client will understand that. If so, big W, if not, then that's not great right?
obviously we restart crashed servers and obviously we have automatic backups. We have enough (early access) games in our portfolio to know that that's a wise decision
Their implementation of the transfer packet itself is good enough for us to use
They might have a command built-in, but ultimately it's going to be plugins doing it
That's what they mean by implementing a transfer packet, it's the implementation on the client
Would putting a try catch in the main of server software let us detect crash and prepare backups?
LOL you don't really want to wrap your entire server in a try catch
theoretically yes but what do you do in case there is an exception during the backup?
You are assuming that, when the game server fatally crashes, there isn't already a corrupted state in memory. Regular backups while the server is running is typically the safer bet.
I use another try catch
Me when I have an unlimited loop that checks if the server has crashed
a while loop
Yep I was thinking the same
I would just curl to /health
another good use case for an http api π
Heartbeats for the server.
is there going to be an official API of sorts to essentially remotely control the server? Something like Minecraft got recently?
Havent heard about something like that so likely not at the start of early access
π§βπ³
Rcon baby
Even if not, it will be possible to write a plugin for this use-case.
yeah I know, just, it would make life easier if we wouldn't have to... and I'm sure hosting providers would like to take advantage of something like that as much as possible
I did hear someone say that Pelican and parkervcp are going to have a nest/egg/yolks ready for Hytale pretty quickly. So I feel like I should archive my docker/scripts i made for it already lol
It would be nice to have access to the server few days before the EA release
You're absolutely right. And we have a list of things we are working on.
surely RCON-like protocol will be available
maybe not day1 but eventually I guess it will
By any chance, did you look into proxy solutions for hytale proto? I figure it would be possible to just early terminate cert like CF does with their non-full ssl mode, and then open another connection with server directly and just pipe packets through. SNI seems available in TLS handshake so it's not even required to dismantle packets. Only thing that I'm curious about is proper ip forwarding, I think it's something that Hytale server would need to support. With Minecraft it was possible with PROXY v2 and some LD_PRELOAD magic (at least that was my trick to get around this issue) but here with UDP packets it doesn't seem so easy anymore.
Probably too early to even think about this but doesn't hurt π
Read the QUIC spec π€
It looks complex to me... I don't think I will be making a C# Hytale server... welp, hello Java my old friend
Technical question here! When EA launches, will I be able to create a Server on an ARM based Linux? Or just x86? Do we know it Already. I guess if it is a Java based it wonβt matter obviously but I donβt know it itβll be Java / 100% Java.
Does it run java 25?
The server?
Your machine, isn't JVM working everywhere
Yes it does
I don't think there will be problems
Ok so just like a MC server then, thank you!
But soon they will release a system requirements for servers
"soon" and they will do it after Christmas just to tease us
hope that ainβt true gotta prepare for it ahahah
Soonβ’
I have a 24GB RAM ARM-based oracle server and an 8GB x86 NAS. I wanted to host it on my βlocalβ NAS and thought about upgrading the NASs RAM but you know, no DDR5 available for humans, AI slop needs itβ¦
Arm servers perform better?
they're cheaper
I mean I think in my case the difference in RAM is what matters the most
In theory they should. The CPU doesn't have as many instructions and therefore parts can be easier to make... is my understanding of it
If I want long render distances
They super efficient
Iβve hosted MC on the ARM based machine with hundreds of mods (+- 350) with 6 simultaneous players and it has been perfect
I mean for 6 player 24GB of RAM is a bit overkillβ¦
Yeah kinda
single-core performance is way more important than cpu architecture. but if you compare two cpus with similar benchmark rankings, the arm one will likely have a better price/power efficiency
I really wanna run the server on one of my Pi5s now
But if you had fun it's all good
Im going to use a zimaboard for internal testing π
I have an M1 MacBook (ARM) and it is an absolute beast
I actually sometime play on it instead of my PC with a GTX 1660 S
I mean neither of them are the most powerfully things in the world but it still surprises me how the Mac can compete with an integrated graphics card and a TDP of 15W against my pc hahah
The memory bandwidth on the Macs is insane. Which is one of those metrics that people rarely look at but can make a huge difference.
Yes, but how is it posible to perform similarly running minecraft with 300 mods.
Comparing graphics performance
Still blows my mind
Your graphics chip benefits from that memory bandwidth. It's one of the reasons people use Macs for local LLMs
The problem is, as you know, 95% games arenβt on Mac
But I bought it to work, memory bandwidth helps when editing videos haha
3D modeling and AI (not for training)
I have to
now, got a large prod deploy in the morning. Have fun y'all
Gn
I'm a bit surprised nobody has ported Proton to work with MoltenVK under Mac, but that probably means there are obstacles I'm not aware of due to not being a mac user or developer.
I suppose, you also need to transpile to ARM. Though, Valve apparently has a solution for that too now, for their Frame, in form of the FEX library. So maybe somebody will look into this further now.
proton was dropped for apple in like 2018? Due to apple dropping opengl support and vulkan was never supported
So MoltenVK would be a pretty hard hurdle to use instead
I think CrossOver is working now tho? dont quote that
Right. But I assumed the whole purpose of MoltenVK was to make porting Vulkan renderers to Mac as painless as possible. I don't know how viable that is with what Proton does to translate DX12 draw calls to VK, though.
I think the DXVK and VKD3D translate DirectX to Vulkan, translation would be possible with MoltonVK but due to their use of MSL might make it difficult
I think MoltenVK auto translates that but autotranslated work in gaming can be finnicky
I can see that. Infuriating, tbh. I remember the optimism of making games around '16-'17, looking at everyone being on x86-64 and progress being made on Vulkan, which was looking to become the standard for graphics on all major platforms, and then it all came crashing down.
The Apple way means devs get a pile of crap 
Can we also just talk about the misery of just compiling for apple? π
yeah. i have a better experience playing games on linux than on mac os. hardware discrepancies aside.
My worst experience working with Mac has been realizing that their version of POSIX is ever so slightly different from Linux version in some critical places, but none of it is documented because, "Well, POSIX documentation already exists." π€¦ββοΈ
But I never touched the graphics, and I haven't worked with Macs since their ARM CPUs came out.
Oh, right. I also did run into some "XCode uses Clang, but it's not the same Clang that everyone else has." Of course, that's also a problem with Playstation. That feeling when your code is throwing weird warnings about assigning unsigned int64 to a size_t, and you learn that Playstation's size_t is 32 bits....
I have never touched apple for anything, I have dove into Xbox and Switch, but not Playstation.
The work I done on Apple wasn't for anything shipped. I was working at a startup at the time, and our work laptops were Macs. For convenience of quickly testing server changes locally, I maintained our back-end to be cross-compilable on Linux and Mac. Hence the POSIX nightmares.
XBox and Playstation has been for games I've worked on, though. Well, and actually I worked on one game that shipped for Stadia, which was a Linux platform. So I technically have a game shipped on Linux with Vulkan rendering.
The only part of rendering I've touched was some custom shader nodes, though, and setting up relevant buffers to get some fancy water FX, though. Most of my work was very much platform-agnostic.
Doing this in triplicate (DX12, GNM for PS, and VK for Stadia) was really annoying. Glad I'm not a rendering engineer.
shipping is the hardest part. loss of motivation and shiny object syndrome is palpable. only ever finish what im paid for usually since, moral obligation yada yada. personal projects tho...well... i have a lot of those in the graveyard
Even people in the industry with multiple shipped titles often underestimate shipping. One of the things I keep seeing is teams switching to Unreal, praising it for how much easier development got compared to a bespoke engine, and then they try to ship something. Invariably, there's either a performance hitch they can't resolve or someone just straight up breaks a blueprint somewhere in the "squash all bugs" panic as the deadline looms, and then the whole thing's broken.
Not to mention Unreal can and will corrupt your blueprints for funzies.
I find Unreal so unruly anyway and their target is now far more towards cinema rather than games. π
I don't work in Unreal, I work in Unity. π now with their DOTs and GameObject system and soon to be updated .net ecosystem I cant really find a reason to leave (besides the company themselves. Unity is scrappy as a company)
Haha, even now I dont work in Engine all to often anymore, I am the only build engineer they got! π so I do the internal tooling, build pipeline and whatever other misc stuff gets thrown on my plate. (Startup mentality ya know?)
Wait their GameObject system is getting reworked?
No, maybe? They mentioned at a Unity Unite that they wanted to merge DOTs and GO together in some way, but that was also the same time they said they were going to intertwine NGO, and NE network engines together... So I am thinking that is no longer happening
The legendary Unity 7 statement. π
Mannn, if I make a game plugin, again - I'm using Kotlin this time. ;')
I don't blame you.
Apple did this themselves with game porting toolkit, it's usable as an end user because it's just wine with a d3d12 to metal (D3DMetal) and machine code translation. Whisky uses the library too so it works pretty nicely
Do we know if the server.jar will expose TPS?
we don't even know what their concept of ticks will be
We have to wait for a release to see all that.
I think it's safe to assume that at least basic performance data will be available at launch (since they're doing performance testing right now) but in either case, it'll likely be easy to add a mixin/reflection for it
Whatever equivalent of ticks there will be, nothing stops you from adding a custom object that increments a counter on ticks and publishes that through whatever channel that makes sense if there isn't a native perf counter already.
Its also likely you wont have to worry about ticks, if it works for the entire game I'm sure its bound to work for whatever your adding to the game.
It's ticks, or at least that's how it's mentioned in the leak
He is asking more about "fixed", vs "delta" vs other conceptualized tick systems I believe.
Oh yeah, they use delta time
And after searching a bit in the leak, it seems servers run at 30 TPS and the client runs at 60 TPS and then it interpolates from there.
Interesting, I was curious how much higher they'd go
When was the leak from?
I need this now lol
does anyone know if zap-hosting is reliable for a VPS?
Never heard of them, why not go with OVH?
go bare metal, it's cheaper
also depends on what you're trying to do
Last Slikey said was 30 TPS
so we get 33.4ms to play around with instead of 50ms
it's neat that the client is 60 cause then you could run a custom server at 60 tps without too many problems
It seems you can change it when setting up the server, the minimum is 1 and the maximum is 2048
actually wtf is a client tick rate lmao
It's the time step really
surely it's fps tied
lmao 60fps locked
2048? insane
Yeah, there's no way that'll ever be used
Which might be the point
No, that would be horrible since it would make physics run differently based on FPS. The time step is just how often the game engine updates, it's independent of the FPS
it could be used 100% maany use cases for high tickrates
Minecraft also allows tick warping these days
Genuinely what circumstances would you want 2048 ticks?
very useful to test contraptions
The speed would be staying the same in these circumstances
no it would calculate positions and what not every frame. it's time based not frame based, but still fps tied
Hi Iβm a Minecraft plugin dev who just joined here π
tbh Iβve been not paying attention to how servers work on hytale, how do they? did hypixel studios release their api? will there be the equivalent of bukkit spigot and paper?
The idea is that you won't need a middle-man like any of those, it'll be an official Modding API
And it also hasn't been released yet
yoooooo
They plan to have everything be data-driven, and for all modding to be server-sided
So the capability of plugins will be similar to what you'd get with full-game mods on Minecraft, regarding content additions and the like
It'll be Java, but you could use Kotlin to write your plugins if you wanted
Since they're interoperable and everything
canβt wait to check this out
No, they are calculated every internal tick, not every frame. It basically waits around 16 ms before running another step of the game's logic, it's independent of the FPS. You can run the game at 1000 FPS and it would run the same, since it internally waits a set amount of time before running calculations again
if you write a game that way then there would never be a reason to have more than 60 fps (in the case you're describing here)
the internal tick as you call it is just the server tps, there are calculations done on the client at a set tick per second in some games but im not sure how that would apply in hytale unless the client can take network ownership like it can in unity, roblox, etc
Because the game's logic is independent of FPS. The logic (physics, movement, positions, etc) runs on its own internal tick rate. Higher FPS just means the game draws more frames, but it doesn't make the underlying calculations run faster. For example,. Minecraft has its own game logic that runs at a fixed tick rate, completely separate from FPS. You can change the tick rate with /tick rate, and it speeds up the game logic while your FPS stays the same
The game spins up it's own server
Hmm, so servers will have built in anti-cheats?
9.1 Safety. We implement measures to promote safety and integrity, including anti-cheat systems and content moderation.
I think you lost the plot here
Yeah, like Minecraft does
Hopefully they will just be server authoritative. π
uhh not anti-cheats lol?
Minecraft has an anti-cheat lol
Since when
Since ever.
You said that physics and positions are FPS dependent and that's just untrue. Deadass just ask chatgpt lol
That's not true xD
the whole thing here was that there isn't a "client tick rate". there is just server tps and there is client fps
cuz chatgpt never gives wrong answers
It literally is
Have you seen the "moved too quickly" or ever sent a packet for placing a block you don't have?
Maybe you're talking about bedrock actually, I'm not familiar with that side of MC
I'm talking about Java
You can't just teleport everywhere, there are limitations and it kicks you for flying and the likes
They're anti-cheat measures
Client FPS can also be tied to a Tick Rate. - That is how it knows how many times to update. its purly semantics
If your client runs at 144FPS it is UPDATING 144 times a second. That is a tick rate
eh, those are just checks, I'd hardly call it an anti-cheat lol
No, the game simulates its own logic, that's the only way it simulates and predicts things, so everything stays smooth. Literally every multiplayer game does this
it's hacked clients that give minecraft servers the most issues. Since mods(plugins) are server-side only, there shouldn't be nearly as many issues shouldn't
That's literally what an anti-cheat is
Checks that prevent cheating
like I said above, unity has something like this but that is because clients can take ownership of objects on the server
Should've probably thrown "simple" checks in there
I know, I work in Unity. It is a tick rate.
Well yes, the anti-cheat is rudimentary
The hope is that Hytale will be a little more thorough with their server-sided anti-cheat
It doesn't detect killaura, fly hacks, autoclickers, or even x-ray lol
exactly I think we got lost in the sauce at some point here
It does happen to detect fly hacks, just very poorly done ones
It targets movement hacks, spawning items, reach, some denial of service attacks, and that's about it
Yeah, technically it's updating at that rate but instead of running everything at that rate, you limit it using a timestep so you don't potentially rerun logic thousands of times every second
The delta
ya
not exactly, thats was my whole point
Right, but I wouldn't call it an "anti-cheat" if it can't anti cheat lol
dangit stop editing your messages lmao
I assume bedrock is better with cheating
I think we are on two different topics. π
this was literally one of the first things I said lmao
Bedrock is infinitely worse, at least when I tried it
Even less anti-cheat, you could just fly around
At this point, I don't understand what is your point, I'm just confused lol
I just listed the cheats it prevents π it's an anti-cheat
It becomes way more obvious when compared to other releases of Minecraft without the anti-cheat
Literal teleportation, flying, super speed, and all of the things you listed
Tbf, I only played 1.7.10, 1.8, and like 1.12 lol
and I believe like 1.16 at one point
the real question here is what's this "60 tick rate" for the client
I believe the vanilla anti-cheat is present in all of those
Though some aspects might be different or missing when you go back to 1.7.10
Same as the server, but for the Client.
but the interpolation goes directly from server tps to client fps
where's this 60 number coming from
FPS = TPS
it is the fixed rate the client runs its simulation
so what we're saying is the client is locked to 60 fps?
Doesn't have to be.
Reason for interpolation
It's the fixed simulation rate. Basically, the game runs its logic around every 16 ms to update movement, physics, gameplay, etc. It checks for time to then trigger an update, so yeah it's time based but not FPS tied as you said. The server still runs its logic and is obviously the authority like every other game but the simulation is needed for interpolation reasons
The game its self can be rendered at a higher FPS, but the game its self will only check the updates per that tick rate.
Not correcting - Adding on
yeah
60 Ticks at 144 FPS Explained:
Ticks (60/sec) = Game LogicPhysics, collisions, input processing
Runs at fixed 16.67ms intervals
Same for all players (multiplayer sync)FPS (144/sec) = Rendering
What you see on screen
Runs as fast as your GPU can handle
Interpolates between game states for smoothnessWhy Split Them?
Game logic needs to be consistent/deterministic
Visuals should be as smooth as possible
You get 2.4 frames rendered per game tickExample:
Server: Updates game world 60 times/sec
Your PC: Draws 144 frames/sec
Between server updates, your client interpolates movement so it looks butter smoothTLDR: Game "thinks" at 60Hz, you "see" at 144Hz. Best of both worlds - consistent gameplay + smooth visuals.
Claude can explain better than I. π
This is incredibly common for multiplayer games, almost every multiplayer game runs this way.
I was never asking about server ticks and client fps, I just want to know where this 60 tps on the client comes in
lmao
From the engine?
π after all of this i think i'm confused too
Ask away! - Best way to learn!
It leads to smoother gameplay since packets from the server would be processed quicker, right?
Even if the server only sends them out 30 times per sec
inputs are sent to the server at the server tick rate, but the movement/camera rotation you feel is updated at your monitor refresh rate
And that's common practice? My input systems must suck π
Like girl I'm just checking if the key is down at the end of the frame
Render thread or no thread, screw me
if that's true then we're back to square one lmao
Oh yeah, Valorant runs at 128 Hz (128 checks ever second) - For Honor runs at 10 hz. 10 checks every second. You still see it as normal.
We're definitely living in the future π π and I just never progressed
That's actually astounding to me
I've always decoupled physics, but never inputs
I gotta imagine inputs are sent client to server as they happen, no? Not only 30 times per sec
Some things you see when you play the game are just fake
There is much more to that. Buffering inputs when gathering every update (Not by tick rate) type of stuff
Doesn't affect this convo though, that is just an additional layer
Hytale batches them. Effectively, it sends 33 batches per second, each batch having between 2-4 updates.
interesting
ngl you gaslit me into another conversation and then convinced me I was wrong π
So what things would be controlled by client TPS and not its FPS?
I'm pretty sure I understand server TPS and how the client interpolates based on that
But surely we're not talking about animation calculations when talking about client TPS, since that would be a waste of resources?
We've got inputs; would this also be velocity calculations for entity predictions?
Don't blame me. π (I was on the conversation everyone else was on)
PS: I'm referring to the client, the leak doesn't have any server code.
Are we stacking interpolation on interpolation? Interpolating the server's last reported velocity, and interpolating the client's last prediction for frames?
I'd think client TPS would be things like you clicking to place a block and it appearing to you. You couldn't do that faster than 60 times per second
Blocks placed by other players would only show up at most 30 times per second, since it goes through the server
the client runs calculations at the framerate based of server tick updates, not an internal 60 ticks
that's were we started at lmao
I don't care anymore. Let's agree to disagree
I just wanted to know what this 60 tick clock runs
I'mma read this dang source code now lmfao wtf is even happening
I dont have the source code thats why I asked lol
did u guys know a pb&j adds 33 minutes to your life.
I heard it's only 33 ticks
Stuff like player movement and physics, entity updates (NPCs, projectiles, mobs), chunk/world updates, time progression (day/night cycles, timers), network checks and movement packets, and I think also interactions and triggers (doors, switches, etc), and some other stuff
I was just typing the exact same thing π€£
And in circumstances where the FPS is higher, those are calculated less
But why would you ever want to calculate those more often than you have frames?
Bigrand you go for it. π You seem to have better explanations than I. π
I can understand the user input part, but time progression and physics?
Those can just be resynced later and the frames are more important, no?
I was under the impression a majority of those things were handled server side on hytale
They are, but your client should still do a little guesswork to make it feel smooth
The server's the authority, but the client needs to process it to actually render it to you
By guesswork, I mean interpolation
If the sun only moved when you got a time update from the server, the sun would be effectively playing at 30fps, and would jutter with your network latency
The part I don't get is why you would calculate the sun's position, or whatever else, more often than you would have frames
You wouldn't. You just render it more then you calculate it.
Both the client and server run the game. The client does it because it's smoother to show you a fake simulation that's most of the time right, and then the client receives the server's updates and then corrects itself to show what is actually happening. That's why in Minecraft, when you lag out, you can still move and do stuff, but then when the server sends you the updates everything moves super fast, because that's the client trying to correct itself with the server's state
So there are exceptions when the tick rate exceeds the frame rate?
Not an exception but rather you just have crap FPS. π You see the world at 20FPS instead of 144. It doesn't mean the game isn't still slogging 30hz or whatever the tick rate is set at.
It is purely so you can see the game smoothly. When you rotate it doesn't stutter.
im not gonna lie, i dont know why I even started this. I have used client tick rate's on every project I've worked on
No I'm asking whether certain things aren't calculated more often than frames, despite being tied to tickrate
Like, they won't be calculated extra when you have lots of frames
But they would be calculated less when you do not
thats what I get for trying to have a technical conversation while drinking
LMAO I should be drunk for this
I think I got drunk off of this. π
My brain is a fckin potato that has been left soaking for so long that it's just a mess of starch
my fault I convinced myself clients dont tick and then tried to argue it
Well, I couldn't tell you much about how Hytale does it. All I know from the leak is that the game time is updated 60 times per second, a bit risky, these it what advances each tick: TimeModule, CharacterControllerModule, NetworkModule, MachinimaModule, and ProfilingModule. Thatβs pretty much all I know.
I'm reading the modules now π π
Omg it's literally
Ticks don't happen more often than frames with this
I was literally typing that, and I was thinking "What a terrible explanation"
It's just a cap for how many times these calculations are ran, it's not fully de-coupled from the frame rate
@atomic nebula sorry about that I just wasted your time
I promise I dont suck at programming LMAO
it's probably hard to tell from that whole conversation
On every new frame, it basically counts up the time that has passed
And if it's been enough time, aka 1/60th of a second, it'll tick all the modules
So it's not ticking without a frame
Np, technically all the time I spend on Discord is a waste of time, so nothing changed lol
Programming has nothing to do with this. Concepts and design is a totally different ball game
programming is applying said concepts so it kinda matters lol
Now, if you ever wonder why your Minecraft server "freezes" when friends are loading in chunks quickly, its because your game updates are taking longer than that 16ms. π - So the simulation LITERALLY slows down, but again just as you stated your FPS does not.
- I hope this made sense. I am so sorry if I confused you again
Nah I'm sure they understand that part
If we're not confused we could bring up how chunk loading is separate from the main game thread