{"id":20073751,"url":"https://github.com/drgomesp/midgarts","last_synced_at":"2025-04-05T08:03:50.928Z","repository":{"id":43183918,"uuid":"309860310","full_name":"drgomesp/midgarts","owner":"drgomesp","description":"Multi-platform Ragnarök Online MMORPG client","archived":false,"fork":false,"pushed_at":"2024-12-11T12:49:48.000Z","size":2128,"stargazers_count":130,"open_issues_count":7,"forks_count":20,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-03-29T07:02:33.345Z","etag":null,"topics":["game-engine","grf","grf-explorer","mmo","mmorpg","mmorpg-client","ragnarok","ragnarok-online","ragnarok-script","ragnarokonline"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drgomesp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-04T02:26:45.000Z","updated_at":"2025-03-28T22:35:38.000Z","dependencies_parsed_at":"2024-12-27T20:10:38.672Z","dependency_job_id":"3004cde0-9eae-4703-92a9-775d68fed118","html_url":"https://github.com/drgomesp/midgarts","commit_stats":null,"previous_names":["project-midgard/midgarts"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drgomesp%2Fmidgarts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drgomesp%2Fmidgarts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drgomesp%2Fmidgarts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drgomesp%2Fmidgarts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drgomesp","download_url":"https://codeload.github.com/drgomesp/midgarts/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305932,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-engine","grf","grf-explorer","mmo","mmorpg","mmorpg-client","ragnarok","ragnarok-online","ragnarok-script","ragnarokonline"],"created_at":"2024-11-13T14:47:43.968Z","updated_at":"2025-04-05T08:03:50.905Z","avatar_url":"https://github.com/drgomesp.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Midgarts Client\n\nWelcome to the **Midgarts Client**, a graphical client primarily built using SDL2, OpenGL, and various custom and third-party libraries. The project is designed to create an interactive and visually appealing environment for manipulating and rendering game characters and actions. The application showcases entities, systems, and OpenGL integration for real-time character movement and rendering.\n\nCurrent Screenshots:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/696982/117575166-fff95980-b0b6-11eb-8afa-acd7dcdd6b34.gif\" width=\"25%\" /\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/696982/197043590-041d711b-a5d6-4d58-bf3c-8ea98c1afdc6.gif\" width=\"50%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/696982/116827693-c2557780-ab70-11eb-90cd-b093004361db.gif\" width=\"34%\" /\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/696982/115995910-96a42180-a5b3-11eb-8200-1cfae06bf5bc.gif\" width=\"34%\" /\u003e\n\u003c/p\u003e\n\n---\n\n## Table of Contents\n\n- [Project Overview](#project-overview)\n- [Features](#features)\n- [Requirements](#requirements)\n- [Setup](#setup)\n- [Usage](#usage)\n- [Folder Structure](#folder-structure)\n- [License](#license)\n\n---\n\n## Project Overview\n\nThe Midgarts Client uses the **Entity-Component-System (ECS)** architecture to manage game objects and their interactions. It focuses on simulating a modeled game environment, rendering scene objects (like characters), and controlling game entities.\n\nThe main goals include:\n- Configuring characters with properties like job sprites, direction, position, and states.\n- Using **OpenGL** for rendering.\n- SDL2 for window and event management.\n- Integration with GRF file format for asset loading.\n\n---\n\n## Features\n\n1. **Character Creation and Rendering**:\n   - Multiple characters with configurable sprites, positions, and states.\n   - Supports movement and states like \"Standing\" and \"Walking\".\n\n2. **OpenGL Integration**:\n   - Real-time rendering of characters using a perspective camera.\n   - Efficient use of OpenGL viewport settings and caching.\n\n3. **Keyboard and Mouse Controls**:\n   - Move characters using `W`, `A`, `S`, `D` keys.\n   - Adjust camera position using `Z`, `X`, `C`, `V` keys.\n   - Mouse-click-based direction control.\n\n4. **Game Assets from GRF Files**:\n   - Reads sprite data and configuration files from `.grf` file systems.\n\n5. **Modular Architecture with ECS**:\n   - Encapsulation of rendering and action logic into systems.\n   - Seamless addition/removal of entities or other systems.\n\n6. **Logging and Debugging**:\n   - Uses [zerolog](https://github.com/rs/zerolog) for structured logging.\n   - Debug output including input states and errors.\n\n---\n\n## Requirements\n\nTo build and run the Midgarts Client, the following dependencies must be installed:\n\n- **Go SDK 1.21 or later**\n- **Libraries**:\n  - [Engo ECS](https://github.com/EngoEngine/ecs): Entity-Component-System architecture.\n  - [SDL2](https://github.com/veandco/go-sdl2): SDL2 bindings for Go (For windowing and events).\n  - [OpenGL](https://github.com/go-gl/gl): OpenGL bindings for Go.\n  - [MathGL](https://github.com/go-gl/mathgl): Vector and matrix operations.\n  - [Godotenv](https://github.com/joho/godotenv): Automatic `.env` file loading.\n  - [GRF](https://github.com/project-midgard/midgarts/internal/fileformat/grf): Custom library for `.grf` files.\n  - [Zerolog](https://github.com/rs/zerolog): Structured and fast logging.\n\n---\n\n## Setup\n\n### Step 1: Clone the Repository\n\n```sh\ngit clone \u003crepository-url\u003e\ncd midgarts-client\n```\n\n### Step 2: Install Dependencies\n\nUse Go to download all the required modules:\n\n```sh\ngo mod tidy\n```\n\n### Step 3: Set Environment Variables\n\nThe application requires the `.env` file or environmental variable `GRF_FILE_PATH` to locate required assets:\n\n```env\nGRF_FILE_PATH=/path/to/your/grf/file\n```\n\n### Step 4: Run the Application\n\nAfter setting up everything, simply run:\n\n```sh\ngo run main.go\n```\n\n---\n\n## Usage\n\n### Controls\n\n#### **Character Movement**\n| Action                      | Input                                       |\n|-----------------------------|---------------------------------------------|\n| Move Up                     | `W`                                         |\n| Move Down                   | `S`                                         |\n| Move Left                   | `A`                                         |\n| Move Right                  | `D`                                         |\n| Diagonal Movement           | `W+D`, `W+A`, `S+D`, `S+A`                 |\n\n#### **Character Direction via Mouse**\n| Action                               | Input                          |\n|--------------------------------------|--------------------------------|\n| Set Direction (Mouse Click)          | Top-left, Bottom-left, etc. in respective viewport |\n\n#### **Camera Controls**\n| Action                   | Input    |\n|--------------------------|----------|\n| Move Camera Backward     | `Z`      |\n| Move Camera Forward      | `X`      |\n| Move Camera Left         | `C`      |\n| Move Camera Right        | `V`      |\n\n---\n\n## Folder Structure\n\nThe following are some key directories in the project:\n\n- **`internal/camera`**: Perspective camera logic.\n- **`internal/character`**: Character properties (direction, state, jobs, etc.).\n- **`internal/entity`**: Definitions for character entities.\n- **`internal/system`**: Systems for action handling and rendering logic.\n- **`internal/window`**: SDL2-based window utilities.\n- **`pkg/version`**: Application version management.\n\n---\n\n## License\n\nThis project is licensed under the MIT License. For more details, refer to the `LICENSE` file.\n\n---\n\nEnjoy building with the Midgarts Client! For contributions or bug reporting, please reach out via the project's issue tracker.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrgomesp%2Fmidgarts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrgomesp%2Fmidgarts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrgomesp%2Fmidgarts/lists"}