/Masendor

Open source educational and historical battle action game, All helps accepted

Primary LanguagePythonMIT LicenseMIT

Pygame Logo

alt text

Victores et Victos

Educational and historical battle simulation made with Pygame.

The development for this game is currently on hold. Minor updates and bugs fixed will still be done but expect no major progress for now. For any suggestions or bugs, feel free to report them in the Issues page.

Discord channel: github

For game update showcase video: github


Contribution to development

All helps, suggestions, and issue reports are appreciated.

If you would like to help the project, feel free to join discord for a chat, open issues, commit the codes and do pull requests, or send emails to masendor@proton.me.

Some non-specific suggestions and examples of helps, including but not limited to:

  • Programming: New features, improve current ones, code optimisation/improvement
  • Asset Creation: UI, troop, leader, effect art, sound effect, music
  • Historical stuffs: Battle information, writing, sources, correction, improvements
  • Quality Assurance: Code documentation, game balancing, bugs fix, feedbacks

Note: All the new and current untested development are done on "dev" branch. The main branch is for a somewhat stable version of the game.

The repository history was cleanup from update 0.7.1.9 for the preserved history see: https://github.com/remance/Masendor-backup


Index


How to run/compile

If you want to download the release version to test the game, go to Release tags and ** download** the zip file.

Run

To start testing the game run main.py via Python interpreter for the source code or main file directly for the release version.

System Requirements

MINIMUM:

OS: Windows 7 (Haven't tested on Windows XP or Vista but may work), Ubuntu and macOS need further testing

Memory: 2GB RAM

Processor: Need more testing

Graphics: Need more testing

Storage: Currently 200 MB but likely around 500 MB available space in finished version.

RECOMMEND:

OS: Windows 8, Ubuntu 22.04, macOS Monterey

Memory: 4GB RAM

Processor: Need more testing

Graphics: Need more testing

Storage: 1GB available space

Compile

To compile the source code into an executable program, recommend using pyinstaller and main.spec.

Check the requirements.txt file for dependency requirements if running with the python source code.
Also, the game is now optimised based on the pygame-ce 2.2.1 module and python 3.11. (may have to use cython later for a huge size battle)


Latest Update

alt text

Add new game art style and system that allow player to select available styles.


Key features so far

History is told by the victor, but sometimes the words of the loser do not fade away

14th October 1066 AD, Duke William of Normandy’s force arrived at Telham Hill early in the morning, while Harold Godwinson’s force was already positioned at Senlac Ridge. It is believed that Harold intent to ambush William's army at their camp and was surprised by William's arrival at Telham Hill.

14th October 1066 AD, King Harold Godwinson intercepted William the Bastard’s force at Senlac Ridge, Hastings. The rightful king of England refused to cover in a castle before the pretender and bravely marched his army to crush the enemy head-on.

Have you ever found it weird that most historical games follow only a specific version of the story? Even a single battle may have more than one side of the story.

For example, the Normans say they are the underdog in the Battle of Hastings, while the Saxons also say they are the underdog. Well in this game, all versions of the story are accepted and represented. Every preset historical map will have more than 1 source of information that dictates the story tone, army composition, size, even formation and possibly more.

Image showing information about the Battle of Hastings

Army is led by more than just a king

Troops in each army can be led by multiple leaders with chain of command and every historical battle will have all the named people that participated in the battle.

alt text

Extremely easy map creation

Map creator in most games requires a degree of learning to use effectively. In this game, you just need to use MS Paint or any drawing software (GIMP, Adobe Photoshop, etc.) to create a map.

Draw the image with the right colour set, and the game will convert them into a playable map. Most other map functions are also very easy to create and modify.

Video demonstration: https://www.youtube.com/watch?v=8Omm-o6Dy60

Encyclopedia and stuffs

This game's encyclopedia will have more information than just from the Wikipedia website as long as they can be found that is.

alt text

This function is going to be a headache to write and research. But hopefully, it will provide useful and interesting historical information to players.

Tools

Animation maker

Animation maker for the troop Vector-based animation in game. The tool is made with pygame and the code is compatible enough for other purposes with some modification.

alt text

Photo studio

Photo studio to make battle screen to your liking. Simply add subunit and effect data and the tool will render them.

alt text


Credit

Tool

Subunit sprite viewer by coppermouse (https://github.com/coppermouse)

Game Asset

Graphic Art:

  • Ryu Hill (Mystika Digital Media)

Sprite:

  • Prototype slash effect sprites by inogNate
  • Weapon sprite by jeet

Sound (Obtained and edited):

Translation

Ukrainian Translation:

  • JerryXd

Help with game coding and bugs fixed:


Future Plan

Ver 0.7 Future Visionary: custom unit and troop editor, march sound system, keybinding, loading screen, England Campaign

0.7 and 0.7.1: console stick, control key binding

0.7.2 and 0.7.3: Companion system

0.7.4 to 0.7.6: custom unit editor and march sound system

0.7.7: custom troop editor

0.7.8 and 0.7.9: specific Leader command, loading screen, Minor battle: 764 Irish abbey war

Ver 0.8 Authentic Attraction: In-game art, better-looking UI, add intro screen, Egypt Campaign

0.8 and 0.8.1: Rework ranged attack bullet system to include height calculation

0.8.2 and 0.8.3: Improve UI art

Ver 0.9 Gaze of New Life: AI and pathfinding (The most challenging step unless cut corner to the point of braindead AI), Ottoman Campaign, final code optimisation before full 1.0

Ver 1 Pax Paradisum: Release version, historical battle simulation game

Ver 1 - 1.5: More art, sound effects and in-game music (May need to use royalty-free music but will see) + Ingame Encyclopedia at main menu + more historical battles

Ver 1.1: Add dynamic terrain/feature change based on battle effect (damage) and weather

Ver 1.2: Urban map, Siege battle and siege equipment, Minor battle: Wolf of Paris

Ver 1.3: hidden stat, line of sight, raise flag/ light torch, ambush bonus

Ver 1.6: Commander mode, strategist and leader duel with dynamic result and event (Move from 0.2.7 as it is not the main priority in the early battle sample yet), transfer leader, Battle of Gaixia

Ver 1.7: Deception, False information, scout, espionage warfare, information, Minor battle: Siege of Orleans

Ver 1.8: Deployable Defence (Stakes, Barrier, Camp, Wagon), dynamic squad facing position and maybe "saved" formation that player can rotate in battle, swappable squad position

Ver 1.9:

Ver 2.0: Multiplayer battle

Ver 2.1: Begin working on another module setting

Unforeseeable future: forced march (Moved here from 0.2.7 as this feature won't have much used until the game map become much larger than just a single battlefield), Queue command


For those who have read this far, thank you for your interest in the game. To be honest, every single update begins with how do I even start with this.

I start developing this game with zero knowledge in video game development let alone how to use pygame. I start learning how to use pygame by tinkering with alien.py in the pygame examples folder and keep testing/changing it until it became what you can see right now (I keep most video updates on YouTube which show the progress of improvement almost from the start). All of the plans I list for the future are the same. I have no idea how to do it, the only thing I have is the picture of what I want to make it look like. Nevertheless, it is fun figuring stuff out and don't let the lack of knowledge stop you from making your own game :P.