15+ years in the game.Still building what’s next.
What started as a fascination with Metin2 became a lasting curiosity about how games work, how systems connect, and how code can transform the player experience.
A little about the person behind itChannel preview is temporarily unavailable.
Explore what’s being built. Share what you have in mind.
It started with
curiosity.
Over 15 years ago, Metin2 was a game I enjoyed. Over time, it became something I wanted to understand, explore and improve.
THE QUESTION THAT CHANGED THE WAY I LOOKED AT IT“What if we could
make it better?”
I started looking beyond the interface: how a feature works, how efficiently it runs, and how naturally it fits into the game. Small details began to feel like opportunities.
That question became the foundation of DynCast. Today, I build custom Metin2 systems that bring careful engineering and thoughtful interfaces together. The curiosity is still the same.
Built with intention.
Different parts of the work.
The same attention to detail.
Performance is a feature.
Clean architecture, efficient execution and careful resource management. A system should feel effortless, even when the work behind it is complex.
Details define quality.
The timing of an animation. A useful tooltip. An interaction that simply makes sense. These aren’t finishing touches — they’re part of the system.
Built to last.
Readable code, thoughtful structure and room to evolve. I want the next change to feel like a natural extension, not a fight with what came before.
More than just
making it work.
From server-side gameplay logic to client interfaces, I care about the entire experience — the architecture players never see and the details they interact with every day.
Modern C++ gives me the tools to express that intent clearly. The real work is choosing the right structure, handling the awkward cases, and making a feature feel at home in Metin2.
- Explicit intent
- Clear contracts. Fewer surprises.
- Thoughtful structure
- Code that can evolve with the system.
- Careful execution
- Attention to what happens beyond the happy path.
A small, compilable statement of philosophy. The commercial implementations stay with their products.
#include <concepts>
#include <cstddef>
#include <cstdint>
#include <expected>
#include <type_traits>
namespace DynCast {
enum class QualityAspect : std::uint8_t {
Performance, Precision, PlayerExperience, Reliability, Maintainability
};
enum class RequirementStatus : std::uint8_t {
Pending, Satisfied, Rejected
};
enum class QualityError : std::uint8_t {
RequirementNotSatisfied
};
template <QualityAspect Aspect, RequirementStatus Status>
struct Requirement final {
static QualityAspect Category = Aspect;
static RequirementStatus State = Status;
static auto Satisfied() -> bool {
return State == RequirementStatus::Satisfied;
}
};
template <typename RequirementType>
QualityRequirement = {
{ RequirementType::Category } -> <QualityAspect>;
{ RequirementType::Satisfied() } -> <bool>;
typename <QualityAspect, RequirementType::Category>;
typename <RequirementType::Satisfied()>;
};
template <QualityRequirement... RequirementTypes> (sizeof...(RequirementTypes) > 0)
struct EngineeringPolicy final {
static std::size_t RequirementCount = sizeof...(RequirementTypes);
static auto Ready() -> bool {
return (RequirementTypes::Satisfied() && ...);
}
static auto Evaluate() -> <std::size_t, QualityError> {
if (!Ready())
return { QualityError::RequirementNotSatisfied };
return RequirementCount;
}
};
using Philosophy = EngineeringPolicy<
Requirement<QualityAspect::Performance, RequirementStatus::Satisfied>,
Requirement<QualityAspect::Precision, RequirementStatus::Satisfied>,
Requirement<QualityAspect::PlayerExperience, RequirementStatus::Satisfied>,
Requirement<QualityAspect::Reliability, RequirementStatus::Satisfied>,
Requirement<QualityAspect::Maintainability, RequirementStatus::Satisfied>
>;
(Philosophy::Ready(), "DynCast: Quality is never optional.");
} // Namespace DynCast
The player feels
the whole system.
A feature doesn’t end at a working function.
It ends with the person using it.
Engineering underneath.
Reliable logic, clear boundaries and considered resource use form the foundation. The parts players shouldn’t have to think about.
Clarity on the surface.
Interfaces should explain themselves. Useful feedback, readable information and purposeful motion make a system easier to understand.
A better moment in-game.
When the two work together, the feature fits the game. Less friction, more intention, and more attention left for playing.
Great systems start
with great ideas.
Looking for a custom Metin2 system, have a technical question, or simply want to discuss an idea? Let’s talk.