jardiacaj / finem_imperii Goto Github PK
View Code? Open in Web Editor NEWA web-based role-strategy multiplayer game
Home Page: http://fi.joanardiaca.net
License: GNU Affero General Public License v3.0
A web-based role-strategy multiplayer game
Home Page: http://fi.joanardiaca.net
License: GNU Affero General Public License v3.0
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.
Including better notifications.
Currently the regular str.format() function is used in HTML-generating functions. For example:
finem_imperii/world/models/geography.py
Line 71 in 8ba540c
This forces to use the |safe tag in templates when outputting the result, which creates XSS vulnerabilities. For example:
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
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.
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.
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).
No notifications are sent when a new candidacy is presented to an election.
Also missing for election resolving.
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.
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)
Open questions:
Suggestions:
Additional thought on implementing a messenger:
Suggestion: incremental implementation
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.
Thanks @Dissident-
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
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.
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.
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.
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.
Implement simple email verification both in the code as in the infrastructure.
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.
Spies would specialize in subterfuge and espionage. They would be able to intercept communications, gather privileged information, engage in sabotage or even assassinations.
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.
Some aspects of the game are very commonly misunderstood because the game is not self-explanatory. Main issues:
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.
Improve economic design and implementation documentation. Revise current balancing.
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.
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.
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.
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.
There is currently no way to transfer money between characters.
Open questions:
It's been many years since my last serious frontend work...
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.
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.
Add things like:
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:
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.