palfore / osrsmath Goto Github PK
View Code? Open in Web Editor NEWMathematical modeling and optimization of the game Old School Runescape.
License: MIT License
Mathematical modeling and optimization of the game Old School Runescape.
License: MIT License
Only a handful of special equipment effects have been included. But many, such as Viggora's chainmace have not been included.
The current implementation doesn't support stacking special equipment bonuses.
A possible solution would be to implement these as a class that supports addition.
However, an even better solution would be to add them as normal equipment bonuses.
Especially when fighting bosses, not every piece of equipment should be optimized for offensive. Players might often replace offensive gear with defensive (eg: bandos chestplate swapped for karil's top).
Perhaps checkboxes to enable/disable optimization may be allowed.
In addition since they might choose something with offensive bonuses, they should also be allowed to set that equipment slot to a particular item.
The dropdowns in the optimization panel output can be made editable for this reason.
Like those found on the wiki, eg:
Feel free to suggest or try out your own ideas.
Here is a list of modules that need documentation.
Follow the google style guide, or checkout model.successful_hits.py
for an example.
model.boosts
model.experience
model.damage
(although this might need a redesign)model.player
(although this might need a redesign)model.monsters
(although this might need a redesign)When skilling outside of a guild, the probability of success is determined by two variables: low
and high
. The probability then is (N+1)/(255+1)
, where N=low*(99-lvl)/98+high*(lvl-1)/98
and each division is integer division and so rounds down. This has been shown experimentally by the wiki team and confirmed by jmods. Note, the term for inside of guilds is N=(low*(99-lvl)+high*(lvl-1))/98
. The effect of probability-altering equipment is to change the N
value. For instance, if N
is the term for the success probability of harpoon fishing with a normal harpoon, then floor(1.35*N)
is the corresponding value for a crystal harpoon, which has a 35%
boost.
This is different from what is currently in the code and disagrees with assumption 4. (Love the project, by the way!)
This would allow further optimizations such as balancing food and DPS.
Determine how to structure the code to model the autonomous combat between two fighters (player or monster).
Here are some considerations:
To treat these on equal footing, a fighter should have attacks registered to it. Those attacks should get joined when a damage distribution is needed. This would mean that all the special effects, like bolts, should be separated from their normal attack and both a registered to a fighter with respective probabilities.
Thus, the current state is that attacks should be the base unit.
Currently only melee is supported by model.damage
and apps.optimize
. This involves not only the damage calculations, but also the requirements like crossbows needs bolts, ammo can be worn but a range weapon might not use it (eg: crystal bow and any arrows).
A large number of the unit tests are failing due to being out of date (eg: code signature changes)
Run these with python -m unittest
while in the test
directory.
The experience per hit is normally 4, however some monsters give bonus xp. The optimize app accepts a multiplier, but certain places in the code hard code the 4, this should be updated so it uses the users input.
The progress bar seems to not update properly on mac and windows.
On mac changing font size is slow, which is okay.
However, changing the font on linux/windows the first time may cause a sudden font-size reduction. This is likely related to system-default incorrectly being read by the application when first loaded.
This likely requires knowledge with PySide2 and PyInstaller.
Calculating max hits and accuracies gets very complicated and I don't have the game knowledge to carry this out.
Either the dps calculator people of the wiki team may be able to provide insight.
Test cases for PvP and PvM setups would be very helpful!
I noticed if you mark Desert Treasure 1 as complete the quests required for its completion stay in the graph. I think it would make more sense to the users if child quests were marked completed automatically in a circumstance like this.
OS: Windows 10
Python Version: 3.8.5
Description:
Installed osrsmath via pip and tried to run the osrs.path command as stated in the instructions on PyPi: https://pypi.org/project/osrsmath/0.0.1/
The following error is output:
C:\Users\marcu>py -m osrsmath.apps.path
Traceback (most recent call last):
File "C:\Users\marcu\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 194, in _run_module_as_main
File "C:\Users\marcu\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 87, in _run_code
File "C:\Users\marcu\AppData\Local\Programs\Python\Python38-32\lib\site-packages\osrsmath\apps\path\__main__.py", line 60, in <module>
NameError: name 'get_opponents' is not defined
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.