Giter VIP home page Giter VIP logo

finem_imperii's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

finem_imperii's Issues

Rebellion and realm founding

Allowing to rebel as a member of a realm and to found new states is an important aspect of then original concept that has not been implemented.

This would allow unhappy realm members to overthrow their leaders, making the latter more prone to take into account their subordinates’ whishes and satisfaction levels.

Being able to found new realms, either as a secession of an existing realm or as a pioneering project would allow a deeper game play and more complex political interactions.

Use format_html for HTML-generating functions

Currently the regular str.format() function is used in HTML-generating functions. For example:

def get_html_link(self):

This forces to use the |safe tag in templates when outputting the result, which creates XSS vulnerabilities. For example:

{{ request.hero.location.tile.get_html_link|safe }}.

A better solution would be to use django.utils.html.format_html(): https://docs.djangoproject.com/en/1.11/ref/utils/#django.utils.html.format_html

New unit types: cavalry and pikemen

In the current state of the the game, only infantry units exist. The addition of new types, like cavalry, pikemen, archers, etc., each with their own special abilities, strengths and weaknesses, would add more importance to the strategic elements of battles, which is currently limited.

Complex economy

This issue should be divided into smaller issues.

The original idea includes a deeper economic system based on resource production. The idea is to have different buildings that either extract natural resources (sawmills could produce timber, mines could produce metal ore, etc.) or manufacture resources to different forms (blacksmiths could produce tools and weapons, carpenters could produce furniture, etc.).

This would completely change the form how resources are produced and consumed in the game and could introduce more complex trade relationships and realm management possibilities.

Some goods would be vital for the militaristic aspects of realms (like weapons) while others may improve the happiness of the population and thus public order, too.

Actions and character switch

Currently, if you switch your character in a browser tab and do an action in a different tab, it can be confusing that the action is not applied to the shown character (as it was switched in the other tab).

Elections notifications

No notifications are sent when a new candidacy is presented to an election.

Also missing for election resolving.

Character pause

While the game has been designed and implemented such that short absences should have no large impact in game play, players who choose to be absent for longer periods or leave the game altogether can, in the current implementation, cause problematic situations.

There is currently no implemented way to delete or pause characters. This causes inactive characters to linger indefinitely in the game worlds.

Pausing characters would be an useful feature for players who need to stop playing for a period of time but could return in the future. Also, pausing of characters would be automatic for accounts that have been inactive for a prolonged amount of time.

Permadeath

Originally I envisioned this game containing permadeath, which would be unavoidable in the long term by the aging of characters. Other causes of permadeath could be the assassination by another character or by dying in battle.

The death of characters would give more importance to legacy and planning what could happen after a character’s death. This is a complex feature to design properly, as many players will find permadeath excessively frustrating and may prompt them to stop playing altogether. (see #19)

Advanced cash transfer

Open questions:

  • How to avoid giving an advantage to users having multiple accounts? (maybe not so important yet)

Suggestions:

  • instant money transfer if both characters are in the same location
  • implicitly "hire a mounted messenger" for transferring money over distance
  • you have to pay for his service ("fee")
  • takes a certain amount of time per distance unit to deliver the money (turn-based)

Additional thought on implementing a messenger:

  • can he be robbed? (by other players? by the system?)

Suggestion: incremental implementation

  • only local, instant money transfer (already implemented)
  • transfer money over distance by hiring a messenger (costing money and time)
  • messenger can betray you (in X% of the cases) and transfer fails
  • different types of messengers (different amount of reliability with different kinds of fees)
  • messenger can be robbed by others (same possibility as the reliability of the messenger?)

Sieges

The addition of sieges and siege battles would increase strategic elements even more. Settlement could have defensive elements like walls which attackers could either siege or assault. This could make the addition of siege military units useful. The construction and maintenance of defensive structures would make realm management more complex.

Additional character actions

There is currently not much that can be done each turn by the characters. Most of the time characters have goes unspent.

Proposal: add new actions, for example

  • Train units
  • Add soldiers to existing unit
  • Improve units
  • Explore settlements -> random events can be triggered
  • Harvest resources
  • Train skills
  • More ideas welcome

Note that most of these actions would require implementing the "back end" (for example, unit skill does have no effect yet in battles, there are no character skills yet, etc.).

A separate issue should be created for each action to implement.

Hero character class

Heroes would specialize in fighting and participate in battles as a soldier. They would confer significant bonuses during battle, but they always risk death in the battlefield.

Realm territory loss

In the current state of the game, mismanagement of territory may lead to both hunger and population loss, and the rising of barbarian military units. While the mismanaged region may be non-productive, the de jure ownership of the region is never actually lost (except if a different realm conquers it).

This means that regions are never returned to barbaric control and realms can only grow if uncontested by other realms. This may lead to aberrant game play.

Unit micromanagement

While in the current implementation each soldier is represented individually in the database, this is barely if at all noticeable.

The original idea includes the capability to identify each individual soldier and manage them independently. This would allow to see each soldier’s skill level, health status, history, etc. Also actions would be applicable to individual soldiers: removing them from the unit, training them, etc.

Email verification

Implement simple email verification both in the code as in the infrastructure.

Subordinate organizations and power delegation

One of the parts of the game includes aspects of trust, treason, hierarchies and delegation.

Unfortunately, in the current state of the game, a character in a powerful position cannot cannot create subordinate positions or organizations. This is an important missing feature that would add dynamism and deepness to the game.

Those subordinate organizations would be managed by their owner, such that the latter may decide who is a member, and when to create and dissolve those organizations.

Furthermore, allowing to delegate owned powers to subordinate organizations would allow for a more interesting management of realms.

Frontend issues

  • Character home page should be redesigned.
  • Minimap should be context-aware (show the location of the currently viewed item).
  • Messaging dropdown in topnav is useless.
  • Express time always in hours.
  • TMI in organization view.
  • Allow to change unit settings in "view orders" view.

Spy character class

Spies would specialize in subterfuge and espionage. They would be able to intercept communications, gather privileged information, engage in sabotage or even assassinations.

New unit type: archers

In the current state of the the game, only infantry units exist. The addition of new types, like cavalry, pikemen, archers, etc., each with their own special abilities, strengths and weaknesses, would add more importance to the strategic elements of battles, which is currently limited.

Improve intuitiveness / in-game help

Some aspects of the game are very commonly misunderstood because the game is not self-explanatory. Main issues:

  • Unit stances and how they work
  • Tax system/gold income
  • Food - public order - economy relationships

Fog of war and intelligence collection

Currently in the game every character can see almost all information available about the game world. Each character can see what is going on on every other region, regardless of the distance to it, and can see the military force of other realms, the progress and outcomes of battles, etc.

Because of this, there is currently no reason to do intelligence collection. Restricting available information based on criteria like locality would give an advantage to realms that coordinate their efforts better and would allow to engage in scouting, infiltration and espionage work.

Economy rebalancing

Improve economic design and implementation documentation. Revise current balancing.

Better world map

One aspect that should be improved to make the game more appealing to new players is the visual aspect. There is currently no imagery at all and the design is simple.

Improving the world map with a better representation would make a big difference.

Character deletion

While the game has been designed and implemented such that short absences should have no large impact in game play, players who choose to be absent for longer periods or leave the game altogether can, in the current implementation, cause problematic situations.

There is currently no implemented way to delete or pause characters. This causes inactive characters to linger indefinitely in the game worlds.

Deleting characters should be useful if a player wants to leave the game. It would also be useful in the situation where a player has reached the character limit and wants to create a new character by deleting an existing one.

Improve code quality

To attract developers, one of the key factors is to have clean, easy to understand and consistent code base with elevated code coverage by high quality tests.

The current code quality is not low, but it certainly has room for improvement. For example: the “world” Django application in this project encompasses too many different elements of the game, making it difficult to navigate and understand for new developers. This could be refactored to multiple, smaller, simpler apps.

Also, the static code analysis tool used (Code Climate) points out many present issues in the source code that could be improved.

The currently existing tests are also not categorized and may take some minutes to run on less powerful devices. This can make development more tedious and thus less appealing to new developers.

Dynasties

In the original idea, characters should be created inside dynasties or families. This would allow biological relationships among characters, e. g., one character could be the child of another. This could include diplomatic marriages. Dynasties could also offset the negative aspects of permadeath (#17) by being able to play the heir of a dead character, which could start where the dead character left off.

Money transfer

There is currently no way to transfer money between characters.

Open questions:

  • Effects of distance on money transfers (proposals: introduce a fee to transfer money to a different location; alternatively allow transfer to local characters only).
  • Instant or turn-based?
  • How to avoid giving an advantage to users having multiple accounts? (maybe not so important yet)

Demography simulation

In the current implementation each single inhabitant of each world settlement is individually represented in the database. Their relevance is currently limited: they can be recruited in military units, have residences and workplaces. They also consume food individually and have individual hunger levels.

This concept could be brought further. Population changes like births, aging and deaths could be based on individual simulation. Migration movements to better living conditions could be implemented. Policies oriented towards specific population segments would allow a finer management of population, for example, with the introduction of elderly care or birth houses.

Militias in barbaric regions

Currently barbarian units only rise when public order is low. In the case of barbarian regions, there should be a standing army to increase the difficulty of conquest.

Improve economy visualization

Add things like:

  • Are guilds being promoted, restricted, etc.
  • Is the current workforce adequate.
  • What is the expected yield.

Improved barbarian generation

Barbarian generation is currently "all or nothing". Too many barbarians appear at once when public order gets low, also in a very predictable way.

Ideas:

  • Allow minor revolts/unrest
  • More randomization

Let message titles be free text

Currently there is a field called category in the CharacterMessage model that sets the message title (see message_include.html). This is not very smart. Instead, use a text field for the title.

This means that each created message should get a proper title.

This issue refers only to system-generated messages. Messages written by characters will be treated differently.

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.