Jump to content

Karbust

Management
  • Posts

    1194
  • Joined

  • Days Won

    12
  • Feedback

    100%

Karbust last won the day on September 21

Karbust had the most liked content!

About Karbust

  • Birthday January 23

Informations

  • Gender
    Male
  • Country
    Portugal
  • Nationality
    Portuguese

Development

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Karbust's Achievements

Grand Master

Grand Master (14/16)

  • Problem Solver Rare
  • Reacting Well
  • Dedicated
  • Very Popular Rare
  • First Post

Recent Badges

6.7k

Reputation

  1. Hi everyone, I'm releasing m2_granny_tools, a Blender extension that imports and exports Metin2's Granny2 (.gr2) models and motions, together with the script files the client loads alongside them. The goal is simple: take a model out of the client, edit it (or make one from scratch) in Blender, and put it back in a form the client loads exactly like its own files, without needing 3ds Max and the old Granny exporter. Download: [Hidden Content] How it works Blender can't load the Granny SDK, so the extension ships a small converter, gr2tool.exe, built against the Granny 2.11.8 runtime (the client links also has to use this version). Every .gr2 is read and written by Granny itself, never by a reimplementation of the format. The extension handles everything on the Blender side and calls the converter for you; there's nothing to set up. The rules it follows come from reading the client source (EterGrnLib, GameLib, EterLib), not from guesswork, and they were checked against a full client: over 16,000 .gr2 files round-trip through the converter, and over 9,500 models and 7,000 motions round-trip through Blender with no differences. Features Models Import and export of characters, armors, monsters, NPCs, weapons and zone buildings. Always writes a file the client accepts: 32-bit, the model named after its root bone, and only the two vertex layouts the client handles (skinned PWNT3432 and rigid PNT332). Lossless round trip: importing and exporting a shipped file without changes gives back the same data, odd entries included. Only what you edited changes. Weapons and buildings: an unrigged mesh exports as a single-bone rigid model, as the Max exporter wrote them. Optional vertex colours, matching Max's output. Keeps the bind pose of scaled bones (the cloth and attachment helpers on player rigs) that Blender's rest pose can't represent, so skinned vertices don't drift. Motions Import and export of .gr2 motions. Motions you didn't touch keep their original curves exactly; edited ones are resampled and fitted to B-splines with the same tolerance and degree options as the Granny Max exporter. Motions + Motion List writes the whole set the client needs: one .gr2 and one .msa per action, plus motlist.txt. .msa extras from action properties: loops, accumulation (movement), motion events (effects, sounds, fly, screen waving, show/hide, warp, ...), attack data (AttackingData: hit type, stiffen/invisible time, swept hit segments) and combo input windows. Each is checked against what the client's loader requires, so a bad entry is reported instead of breaking the whole motion. Textures and materials Per-material texture paths, editable in the export dialog, with the path it will write shown before you export. Files under a ymir work folder automatically become d:\ymir work\... pack paths. Follows the client's material rules: diffuse alpha is the specular mask (not transparency), two-sided materials, and alpha cut-outs (helmet crests, leaves) through an opacity map. Warns you when moving a texture would silently break a .msm skin swap (monster colour variants). Client scripts beside the model .msm race scripts: reads them and writes them back with your new paths. Everything else (attach points, effects, comments) is kept byte for byte. Collision spheres and attached effects are editable as empties on the bones. .mdatr collision and height: imports collision shapes and walkable height meshes for zone objects, and writes them back. It can also write an empty file, so a building is walk-through on purpose instead of getting the client's automatic bounding box. All 2,912 .mdatr files of a client round-trip byte-identical. Working with 3ds Max Export a model's skeleton as FBX for 3ds Max (File > Export > Granny2 Skeleton for 3ds Max every bone at its bind pose, in centimetres with Max's axes, ready to skin against. Max brings the bones in as Dummy helpers, which skin and animate like bones. A model rigged and skinned in Max can come into Blender as FBX and go out as a client .gr2. Bind Pose from FBX recovers the bone scales Blender drops on import. Quality of life Export presets (safe JSON, never run as code), with a 3ds Max weapon preset included that matches a Max exporter setup. Clear reports after every export: what path each material got and why, what was left out, and what to fix. Tested in game A new armor on an existing skeleton, with new materials. A model skinned in 3ds Max against an exported skeleton. A monster's .msm collision and an attached effect, then restored to the original. Textures in a custom folder under d:\ymir work\. Requirements Windows x64. Blender 4.2 or newer (developed on Blender 5.2). Your client's .dds textures on disk if you want to see them in Blender. The .gr2 stores only texture paths, and the extension never copies or converts images. Installation Download io_scene_gr2-0.1.0.zip from the release page. Don't unzip it. In Blender: Edit > Preferences > Get Extensions, then the dropdown in the top right, Install from Disk..., and pick the zip. Everything is under File > Import and File > Export as Granny2 .... Known limitations Blender pose keys can't hold shear, so resampling a sheared bone is approximate. Motions you don't edit are unaffected. Of the two curve modes, the quantized one fits a few motions slightly less precisely (under half a centimetre). It targets clients on the Granny 2.11 runtime (32-bit .gr2). Feedback wanted This is the first public release, and it's only been tested on my own client, so your input matters. Please reply in this thread, or message me on Discord (karbust), if you: Found a bug: a file that won't import, an export the client refuses or crashes on, or a model that looks or moves differently in game than in Blender. Have a file that behaves oddly: clients differ, and odd files are exactly what I need to test against. Miss a feature or have an idea for your workflow. Just used it: what worked, what was confusing, what took too many steps. For bugs, it helps a lot to include: The Blender version and the extension version (0.1.0). What you did, step by step (import, what you edited, which export options). The export report or error message (copy the text from Blender's Info area or the system console). The file itself or the client path of the model (e.g. ymir work/monster2/raptor), plus a screenshot if it's visual. Don't want to share your model publicly? No problem. Send it to me privately on Discord (karbust) instead. I'll only use it to reproduce and fix the issue, and won't share it with anyone. Thanks, and have fun modelling!
      • 21
      • Love
      • Metin2 Dev
      • Flame
      • Eyes
  2. I built a streaming platform for the community — looking for founding creators and server owners You know me as the admin here. For a while now I've been building Metin2Stream (metin2stream.com) — a full live-streaming platform built for the Metin2 community, by someone from it. Not a Twitch clone with a reskin: it's live streaming with a real chat (emotes/badges/commands/replies), past broadcasts, clips, channel subscriptions, donations, and categories that are actual Metin2 servers — because that's how this community actually browses. It's live now. Registration and streaming are open — go look. I'm opening a founding beta for two groups, and I want both: If you run a Metin2 server Your server is a category on the platform. Every stream from it lands in one place your players already browse. During the beta I'm hand-picking founding server owners to get: Your server featured — front-page spotlight and priority placement while you're a founding partner, so players discover you where they're already looking for somewhere to play. Your events streamed where your audience is — GvG, boss runs, drops, launch nights, all auto-announced in this community's Discord the moment they go live. A pipeline for your streamers. Whoever streams your server plugs straight into your category — the more they stream, the more your server is seen. A direct line to me and real say in what gets built — server-owner tooling is on the table and your feedback sets the priority. If you stream Metin2 I'm looking for founding creators to stream weekly during the beta. What you get: Founding rates, locked in — permanently better than the public rates. Early Partner track and the founding-creator badge. A direct line to me. Your feedback list is literally the development roadmap. Your streams auto-announced in this community's Discord. What I ask either way: be active during the beta (creators, stream at least once a week; owners, get your events and streamers on), tell me what's broken or missing, and be patient with beta rough edges. Monetization is currently disabled platform-wide while the payments launch is finalized — founding creators will be the first switched on. Stream Metin2, or run a server? DM me on Discord and I'll send you the full picture for your side.
      • 9
      • Metin2 Dev
      • muscle
      • Flame
      • Love
      • Good
  3. Hey everyone! A huge batch of new features just went live. Here's what's new for you: 3D Model Viewer Browse armors, weapons, and costumes in full 3D with animations In-game visual effects — armor and weapon effects rendered just like the client, depth-correct so they orbit the model properly Sashes (acce) preview with correct per-item scaling and back-effects Costume mounts — preview mountcostume items in 3D Weapon stances & dual-wield support Viewer conveniences: play/pause rotation, configurable background, smooth frame-rate-independent spin New Monsters / NPC Tab Browse monsters and NPCs with a 3D viewer (idle/wait animation) Monster & pet visual effects (effects, metinstones, etc.) Fully localized — names, UI, and tooltips, with per-language search Arrow-key navigation to step through monsters in the viewer Metin2-Style Tooltips & UI Authentic Metin2 item tooltips with per-item specular "Imperial Inventory" UI redesign and grouped icon pickers Various polish and flicker fixes Sharing Deep links for items, monsters, and full 3D viewer loadouts — share an exact setup with a link Rich social cards (Open Graph) — pasting a link now renders a preview of the exact 3D loadout Keyboard Controls Full keyboard navigation for the icon grid and the 3D viewer Data Game data updated to the latest client (GF 26.0.6), plus expanded translations Check it out at [Hidden Content] — feedback is very welcome! (this is not a video)
  4. Fixed YouTube videos with Error 153.
  5. Hello everyone, Today I'm opening my GitLab server to everyone on Metin2.Dev to be able to share code without the fear of it being taken down via DMCA by Gameforge. Public and private repositories available. https://git-kb.com To access, just login with your Metin2.Dev account. Do not create an account, as you won't be approved, with the Metin2.Dev login the approval is automatic. Any issues or questions either open a ticket on discord server or send me a message on discord.
      • 8
      • Love
      • muscle
  6. The original developer of Champions League is @ msnas Not sure if he is still selling it.
  7. Hello everyone, New owner here. Most of you already know me. Not much will change, at least for now. For those who don't know me, read this:
  8. Update Updated the icons and models to the most recent patch 24.3.8. [Hidden Content]
  9. Every time you jump into a new code base it is always confusing, either you are proficient in the language or framework, or not. It takes time to adjust yourself to the new code, to know how it works and where is the most important parts are. Most of the most experienced devs in the metin2 scene have been around it for years, and the source only leaked in 2014.
  10. Indeed, you can find it here:
  11. I have no problem with all you are saying because those are all valid points, except about the unpack part, code wise it can be obfuscated, by that order of ideas then C# apps also have their code always visible, that is a useless point to make. The patcher compressed with electron-builder on the normal compression mode occupies around 94MB to 98MB. Also, when needed I can write a node C++ package, had to do it for something to access the Windows API in more than one occasion. I use electron because I can use whatever I want to do the frontend, and electron is also extremely popular, I could be using MAUI, Avalonia, Qt, Tauri, and many others, but from all of them, only Electron and Tauri are well supported and can use web frontend technologies to develop the UI, for me that is a great and a trade I'm willing to make in memory usage. There is also Electron.NET, that uses Electron behind the scenes with a C# backend instead of Node.js but isn't very popular. And, like I already said, I'm not willing to learn Rust to use Tauri. I'm a web developer and I'm not locked to JavaScript/TypeScript, in fact on the backend I use ASP.NET C#, with React frontends. (Another thing, I hate Python, so not even dead I would even think of using it for anything other than the metin2 GUI.) And, to finalize, please contribute something useful to the community, 3 out of your 6 posts are complaining about Electron, pick a tool and do a patcher for the community, or share something else. It's because of minds like that that the metin2 scene doesn't evolve, always using the same thing for everything.
  12. And what is the problem of having a patcher made in electron? It is still good for a metin2 patcher, my services are even based on it. Also, is this a lot of memory? Could be lower using something like Tauri or even full C# or C++, but it is actually not that bad.
  13. I made it in electron for 2 reasons, I wanted to learn how to use for a long time, and because I could use React to do it, like a website. I agree electron uses a lot of memory and the bundle size is big, because it bundles the entire chromium browser. I have seen an alternative that uses the system browser API instead of bundling an entire browser, however, it is made in Rust, it is Tauri, I'm not interested in learning it. You are more than welcome to explore it, if you already know Rust then it should be pretty straightforward. It is easy to maintain a electron application because you can have it use the same code base as the main website (if that is something the developer wants to do), just needs to add some abstraction layers to determine what API to use, if the electron, or the browser, other than that, it just works. And by the way, Adobe software is written in C++ (Qt), as far as I know. MS Teams used to use Electron but changed to WebView2: [Hidden Content] But yeah, many companies use Electron for their applications because if makes deploying a product fast and easy.
  14. Hello everyone, Most of you already know me, and for those who don't, I have been a member of metin2.dev since 2014, in the metin2 scene since 2012, so definitely not one of the oldest on the scene. Started playing metin2 on a Portuguese private server (#EliteMT2) and because I liked the game, I started trying to understand how it works, it was the best thing I could have done and paved the ground to where I am today as a programmer and a degree in Computer Engineering. Most of my experience has been in programming, mostly web development (JavaScript, TypeScript, Node.js, .NET C#), but I dable in multiple areas, including Network Administrator at my current job. Managing a community as big as this one will be a challenge that I'm willing to take so that it can keep running smoothly. In the beginning I will be getting familiar with how it is already working and then start comming up with ideas to improve the community. Hope you receive me well and, if you have any issues, questions, ideas (all ideas are welcome), get in contact with me through discord (preferably) or a DM on the forum.
  15. On debug you have to update CORS, that's not needed when you build it. Add a console.log above the following line: [Hidden Content] Also add the variable name on line (between the parentisis) [Hidden Content] to be able to see what the error is. After you do this, the error will be shown on the Chromium DevTools that the patcher opens on debug.
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.