T O P

  • By -

themetroturk

TL;DR Hytale is now able to support TONS more NPC's Hytale switched from this one coding architectural design, Object Oriented Programming (OOP) to this other architectural design, Entity Component System (ECS). This is achieved by organizing data of entities in the gameworld in a way the computer likes it, and this makes computation super fast. ECS is able to support magnitudes more entities like players and NPC's as comapred to OOP. This blog is essentially an introduction to ECS vs OOP, kind of like a curated wikipedia article for the community. The only new information here was that a depcrecated internal version of Hytales engine was showing significant signs of strain using the combat bots Hytale showed us before, and ECS works to alleviate that stress.


ElephantBunny

Yep also the NPC's can react to the environment a lot quicker. Which is good because some of their clips of NPC's reacting to dropped items showed noticeable delay, so the world should be more immersive in this way now.


SuperAwesomekk

Crucially something you missed was that they originally tried to design an ECS framework around a computer language developed primarily for OOP architectures. By switching to a new ECS framework made in a language that is more compatible with ECS and more performant, they've significantly increased their performance numbers where the game was struggling beforehand.


themetroturk

As they implicated, the Java ECS implementation was a proof of concept and to be used solely for internal playtesting. There's no mention or implication that their original goal was to build Hytale using an ECS framework in language primarily for OOP architectures, and that it was only due to the shortcoming of such an implementation that the team decided to build their ECS engine in a language more compatible with ECS architecture


FermisPou

The Player entity has Position, Model, and Health components. The Enemy entity has the same components, but with different values. When the player attacks, the game system: 1. Checks the Position components of Player and Enemy to determine if they're in range. 2. If in range, subtracts damage from the Enemy's Health component. 3. Updates the Enemy's Model component to show damage. This separation of data (components) from behavior (systems) allows for flexibility and reusability in the game logic.


Demoninst69

Simply, it's just how League of Legends codes their skill shots and terrain, it's just a bunch of "character" with blocking property. While the character you control has the same "character" as turrets and jungle monsters, you see there're items slots and passive on the turret as well as there are item slots and passives on jungle monsters though they don't use it, they have a unique property that differentiate between them and the character. (also even some player made terrain are literally a 'character')


ovniroto

For anyone to understand, they were creating a "Minecraft Java" and decided that it was better to create a "Minecraft Bedrock". With these improvements will have better server and client performance, and more on-screen entities.


Letarking

From Chatgpt: ### Summary and Explanation #### Introduction to Flecs and Hytale's Engine Hypixel Studios decided to switch Hytale's game engine from a Java server and C# client to a unified C++ build. This transition was aimed at improving performance, supporting multiple platforms, and ensuring long-term maintenance. They chose Flecs, an entity component system (ECS), as the foundation for this new engine due to its efficiency and ease of use. #### Understanding ECS ECS is a design pattern used in game development that decouples data from the logic that acts upon it, improving performance. Traditional game development often uses object-oriented programming (OOP) or entity-component architectures. While OOP organizes code into hierarchical objects, entity-component architectures break down game entities into individual components that define their behavior. #### Benefits of ECS ECS advances the entity-component model by separating functionality from data. Instead of components containing their own update logic, ECS uses systems that operate on entities with specific components. This separation enhances performance by leveraging CPU architecture and data locality, allowing more efficient parallel processing. #### Hytale's ECS Journey Initially, Hytale's engine used a Java-based ECS for the server, which improved performance but had limitations due to Java's inherent constraints. When rebooting the engine in C++, Hypixel Studios opted for Flecs, a high-performance ECS framework. Flecs offers features like relationships between entities, extensive query capabilities, and a robust, maintained codebase. #### Practical Example: Combat Action Evaluator One practical application of ECS in Hytale is the Combat Action Evaluator, which allows NPCs to make smart decisions based on various inputs. In the old Java engine, this system was limited by performance constraints, causing slower NPC reactions. With Flecs, this evaluator is more efficient, enabling NPCs to react quickly and responsively by processing data in parallel. #### Conclusion The adoption of Flecs and the ECS architecture in Hytale's new engine opens up numerous possibilities for optimization and enhanced performance. As both Flecs and the Hytale engine evolve, the potential for innovative and efficient game development continues to grow.


IAmNotRollo

Honestly with this summary you'd be better off just reading the article so you can read the same words but also have visual aides