{"id":18133339,"url":"https://github.com/andreapavoni/parabellum","last_synced_at":"2025-08-21T19:31:19.183Z","repository":{"id":136327809,"uuid":"599035784","full_name":"andreapavoni/parabellum","owner":"andreapavoni","description":"An attempt to build a #Travian 3.x clone written in #Rust.","archived":false,"fork":false,"pushed_at":"2024-11-28T18:11:43.000Z","size":107,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-28T19:23:35.338Z","etag":null,"topics":["cqrs-es","game","mmorpg-server","rust","travian","travian-clone"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreapavoni.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":"2023-02-08T10:14:35.000Z","updated_at":"2024-06-17T21:20:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"3baff1ba-6860-4868-bfb7-8cd07347db65","html_url":"https://github.com/andreapavoni/parabellum","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreapavoni%2Fparabellum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreapavoni%2Fparabellum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreapavoni%2Fparabellum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreapavoni%2Fparabellum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreapavoni","download_url":"https://codeload.github.com/andreapavoni/parabellum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230527884,"owners_count":18240053,"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":["cqrs-es","game","mmorpg-server","rust","travian","travian-clone"],"created_at":"2024-11-01T13:07:28.127Z","updated_at":"2024-12-20T03:12:15.667Z","avatar_url":"https://github.com/andreapavoni.png","language":"Rust","funding_links":[],"categories":["Strategy"],"sub_categories":[],"readme":"# Parabellum\n\nAn attempt to make a Travian 3.x clone written in Rust.\n\n## Quick setup and running\n\nExecute the following commands to try Parabellum. Depending on its stage of development,\nwhen ran it will print on the terminal what it's happening. As of 2023-0207, it just generates\na new map of 100x100 (x4) squares with each one a randomly assigned topology (valley of different resource fields, or oasis of different bonus percentuals, like in Travian).\n\n**NOTE:** be sure to have SQLite installed in your system.\n\n```sh\ncargo install sqlx-cli --no-default-features --features rustls,sqlite\nexport DATABASE_URL=\"sqlite://parabellum.db\"\nsqlx setup\ncargo run\n```\n\n## WIP Roadmap\n\nIn no particular order. The ones that are being currently worked have been **\u003cins\u003ehighlighted in underlined bold\u003c/ins\u003e**:\n\n- [ ] App\n  - [ ] **\u003cins\u003ecommands\u003c/ins\u003e**\n  - [ ] **\u003cins\u003eevents\u003c/ins\u003e**\n  - [ ] **\u003cins\u003eprocessors\u003c/ins\u003e**\n  - [ ] queries\n- [ ] **\u003cins\u003eDb\u003c/ins\u003e**\n  - [x] generic db interface\n  - [x] ormlite and sqlite integration\n  - [x] db models and integration with domain models\n  - [ ] queries\n- [ ] Api\n  - [ ] app integration\n  - [ ] endpoints\n  - [ ] auth (?)\n- [ ] **\u003cins\u003eGame\u003c/ins\u003e**\n  - [ ] **\u003cins\u003erefine domain models and business logic\u003c/ins\u003e**\n  - [ ] hero\n    - [ ] points system\n    - [ ] health\n    - [ ] train/revive\n  - [ ] battles\n    - [ ] battle system: conquer villages/oases\n    - [ ] hero bonus/health\n    - [ ] reports\n      - [ ] loot\n      - [ ] buildings damages\n      - [ ] wall damages\n      - [ ] attacker remaining army\n      - [ ] village remaining army and reinforcements\n      - [ ] hero points\n\n## Overall architecture\n\nThis project has been designed and split in different components to apply some isolation between different responsibilities.\n\n- `app` wraps the several components of the app (db connection, domain models, etc...).\n- `db` implements all the interactions with the database, it implements a generic interface so that it can interact with other kinds of databases other than the actual one (SQLite).\n- `game` specifies all the domain models and business logic, it tries to be as standalone as possible in respect to the other components.\n- `api` implements a REST API in json, so that it's potentially possible to use different UIs.\n\nAlso, to help with the different actions, interactions and outcomes of the game, it has been applied a very simplified version of the CQRS/ES pattern: app calls _commands_ which generates _events_. The events are stored and then processed to change a state of the object, finally the object state gets persisted on db.\n\n## FAQ\n\n### Q: Why yet another attempt to make a Travian clone?\n\nWhy not? [TravianZ](https://github.com/Shadowss/TravianZ) is an excellent project! But it has many years on its backs (even in terms of technology and design patterns), and develpopment efforts are left back to random volunteers wanting to contribute. I always dreamed about making a Travian clone, and this is my opportunity.\n\n### Q: What are the goals? Are you planning to make a 1:1 clone of TravianLegends/TravianZ?\n\nIn the beginning, the first goal is to get a playable game with at least 80-90% of the main features of TravianZ.\n\nAnother main goal is to make it fast and easy to deploy, that's one of the reasons why I chose Rust to implement this project, and SQLite as a database.\n\nSome of the known features will be avoided because outdated and/or not strictly useful, in particular:\n\n- No _Plus_ and neither _golds_ or _silvers_ :-) I don't like the PayForWin approach. Monetization is not planned yet, but when/if it will come, it will be for things will help the player to _play better_, not to have an advantage over the ones that don't pay.\n- No alliance forum/chat: it made sense before 2010s, but as of today, it's just a burden, and people use other tools to communicate (Discord, slack, instant messengers...)\n\n### Q: Where can I find a demo server?\n\nThere isn't one yet, because it's still under heavy development and there isn't anything to show, except the good much of code published here.\n\n### Q: What about the UI? Will it be the same the players already know?\n\nBeing usability and portability a main goal fo this project, the UI will be designed to be comfortable even on small screens, so the UI will probably be very different. I'm very far from being a graphic designer, so I hope someone will jump in to help.\n\n### Q: Will Parabellum have localized translations?\n\nMaybe. The initial main language will be English for _ubiquity_ reasons, but I don't exclude the possibility to add more languages later if the project will gain popularity.\n\n## Credits\n\nIt would have been nearly impossible to start this project without the efforts of many people that contributed (and still does) to [TravianZ](https://github.com/Shadowss/TravianZ) project (and its many forks around the web). Also [Kirilloid's work](https://github.com/kirilloid/travian) has been fundamental to apply the battle system formulas in this project.\n\n## Copyright\n\nA [pavonz](https://pavonz.com) joint. (c) 2023.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreapavoni%2Fparabellum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreapavoni%2Fparabellum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreapavoni%2Fparabellum/lists"}