Code Monkey home page Code Monkey logo

openherosim's Introduction

MEDIEVAL HERO SIM (WORKING TITLE)

Medieval Hero Sim is currently attempting to create an open source game similar to Majesty on the Godot Engine.

A bunch of pawns in flat plane

A bunch of pawns in flat plane

A bunch of pawns in flat plane

A bunch of pawns in flat plane

Community

Right now it is just me (Sunshine-Dev), but one day I hope there will be an awesome community! Here is a link to the discord: https://discord.gg/RcvAtQj268

running

The project currently runs on Godot 4.2.2

To run the project: download Godot C# version 4.2.2 download .NET SDK version 6 or greater

That should be all required to run it. For the actual running of the project:

  1. Open Godot C# 4.2.2
  2. Click 'import'
  3. Navigate to this repository's project.godot file. (located in MedievalHeroSim/Game/project.godot)
  4. Select the newly imported project and click 'run'

For editing: CONTRIBUTING.md

If I missed anything (and I am sure as hell I did) message me over Discord.

openherosim's People

Contributors

sunshine-dev-forever avatar andrewmckinney avatar valkyrienyanko avatar

Stargazers

 avatar  avatar Declan M Coster avatar  avatar Rich Kirk avatar Joanna May avatar  avatar

Watchers

 avatar  avatar

openherosim's Issues

Dead and dying pawns should have no collision

Currently dead and dying pawns still have collision, which means living pawns can push them around. Dead pawns sliding around on the floor looks bad

resolution

  1. Dead and dying pawns should no longer collide with other pawns

Movement should not be physics-based

MedievalHeroSim currently uses physics to move pawns around in the world. Its simply unnecessary to preform that level of computation for moving aroud pawns on a flat plane. If pawn movement was not based on physics, MedievalHeroSim might be significantly more optimized.

resolution

  1. investigate if removing physics-based movement would yield a performance improvement
  2. if non-physics-based movement is fast, then implement it.

Automated Testing

Big projects need unit testing. As this project continues to increase in size, manually retesting every possibility will be more and more impossible.

We can implement automated testing to combat this. Automated testing comes in two flavors, integration testing and unit testing.

Integration testing tests how multiple components in a program interact together. For MedievalHeroSim that is akin to testing an entire scene. Using some tools from here: https://chickensoft.games/, this should be fairly doable.

Unit testing tests exactly one class. Godot4 is currently very hostile to unit testing for a number of reasons, the largest of which is that any GODOT-derived class cannot be mocked or created in unit testing.
Here are some solutions I may have found to the unit testing problem:

  1. use Zero mock to mock concrete types: https://github.com/ZeroMock/ZeroMock/tree/master
  2. Use assembly modification to make all godot methods virtual, thus enabling the use of a more common mocking framework, like moq: https://github.com/fody/virtuosity

In other news, we can use this: https://github.com/StefH/ProxyInterfaceSourceGenerator to generate interfaces for our classes.
Might be worth taking a look at.

Figure out a framework for modding

I would eventually like to get to the point where even the base game is loaded as a mod. Not sure how to structure this project for this at all.

Investigate the performance cost of having wrong uids

Overview

Right now godot uses uids to identify other objects to import into scene. There uids are unfortunately computer-specifc, and so need to be remade every time this project is cloned locally.

If the uid is incorrect, then a filepath fallback is used.

problem

One of the times I cloned this project locally, it ran unusually slow. After the uids were rebuilt, the project was noticeably faster. I did not do a proper test, so something else may have happened, but this is still worth a look.

Testing

I imagine you could just manually edit all the uids in scene to be wrong and see if it runs slower

Animation retargeting

problem

Animation retargeting is a technology that allows once skeleton to be used for multiple meshes. I have no idea how it works.

resolution

this issue will be marked as resolved then someone has investigated and explained what Animation retargeting is and how it can or cannot benifit this project in the comments below

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.