That would be awesome. Too bad I've only got basic knowledge of C#. I might be able to help if you have any questions about the game mechanics though.
"every now and again you come across a game that has so little emotional connection to who you are that you end up standing there, gazing at the screen and saying "I'm just pressing buttons and my life has no meaning,"" - Colin Campbell
The bulk of the work will probably be figuring out every champion's raw attack speed, armor, armor/lvl, MR, MR/lvl and movement speed values.
Also difficult will be stuff like Malzahar's voidling, Heimerdinger's turret etc.
They can't be serialized in terms of regular skill effects. I'm thinking about whether I should simply code them as a regular targeted DoT, since in terms of damage calculation it's the exact same.
Another interesting thing to program will be the universal formula evaluator, which will have to take into account expressions such as $AD or $MaxHP, or $StackCount for buffs.
(I'm thinking of Twitch's spell system for example: His passive would be an On-Hit Effect that applies a stack-limited Buff that itself has a DoT * $StackCount component using a certain ID. His poison skill would remove all Buffs with that ID and apply a certain amount of damage based on its $StackCount. I'm wondering whether to implement functions as well, for example Sqrt() or Round(), that way I could use a function like StackCount(*id of buff here*) to get the amount of a certain stack.)
Edit: I have a better idea. Instead of adding functions, I'll simply use a unique $StackCount variable for every buff ID, for example $StackCount51 would get the count of the buff with the unique ID 51.
Also difficult will be stuff like Malzahar's voidling, Heimerdinger's turret etc.
They can't be serialized in terms of regular skill effects. I'm thinking about whether I should simply code them as a regular targeted DoT, since in terms of damage calculation it's the exact same.
Another interesting thing to program will be the universal formula evaluator, which will have to take into account expressions such as $AD or $MaxHP, or $StackCount for buffs.
(I'm thinking of Twitch's spell system for example: His passive would be an On-Hit Effect that applies a stack-limited Buff that itself has a DoT * $StackCount component using a certain ID. His poison skill would remove all Buffs with that ID and apply a certain amount of damage based on its $StackCount. I'm wondering whether to implement functions as well, for example Sqrt() or Round(), that way I could use a function like StackCount(*id of buff here*) to get the amount of a certain stack.)
Edit: I have a better idea. Instead of adding functions, I'll simply use a unique $StackCount variable for every buff ID, for example $StackCount51 would get the count of the buff with the unique ID 51.
Was thinking about doing a basic form of this myself. I'll keep an eye on the project, and I'll chip in where necessary. F'rinstance, surely an array for StackCount, with the index being the ID makes the most sense?
Quoted:
Was thinking about doing a basic form of this myself. I'll keep an eye on the project, and I'll chip in where necessary. F'rinstance, surely an array for StackCount, with the index being the ID makes the most sense?
I was thinking the same, except that you'd want to use a hash instead of an array since it's not guaranteed that IDs are in linear order, or even 0 based (for example, you could have all buffs offset by 10000). I'll upload the source for you whenever I make a major addition if you want to have a look at it / see if you can contribute.
The issue mentioned above is just that there's no system to access collections in the basic formula language I had been thinking about, only a way to access individual variables. I could work around this by simply assigning the real value of StackCount[1234] to the script variable $StackCount1234 without the StackCount1234 variable actually existing - that way I have the cleanest possible solution without implementing unnecessary complications for a single purpose.
nand wrote:
The bulk of the work will probably be figuring out every champion's raw attack speed, armor, armor/lvl, MR, MR/lvl and movement speed values.
That should be really easy. All the numbers are regularly updated on the lol wikia.
Quoted:
Also difficult will be stuff like Malzahar's voidling, Heimerdinger's turret etc.
They can't be serialized in terms of regular skill effects. I'm thinking about whether I should simply code them as a regular targeted DoT, since in terms of damage calculation it's the exact same.
They can't be serialized in terms of regular skill effects. I'm thinking about whether I should simply code them as a regular targeted DoT, since in terms of damage calculation it's the exact same.
That should be the correct way to go about it.
I'm a strong independent black mage who don't need no mana.
Here's a link, if you haven't found it yet.
"That which can be asserted without evidence, can be dismissed without evidence." - Christopher Hitchens
Hey Nand
Sounds like an interesting project. I do agree with cauchecka though, it will pobably take some time and effort to create a complete simulator.
If you have any formal requirements specification or class diagrams for the design of the application and wish to share them with us, let me know where we can have a look at them.
I am not really interested in the mathematical formulas or even algorithms, but would like to see the high level view of your framework if you wish to go the formal development route.
Good luck and enjoy!
Sounds like an interesting project. I do agree with cauchecka though, it will pobably take some time and effort to create a complete simulator.
If you have any formal requirements specification or class diagrams for the design of the application and wish to share them with us, let me know where we can have a look at them.
I am not really interested in the mathematical formulas or even algorithms, but would like to see the high level view of your framework if you wish to go the formal development route.
Good luck and enjoy!
A baker by profession....
You need to log in before commenting.
Basically, I'm writing a framework that will allow for the creation, simulation and analysis of any possible item build, scenario or situation. The entire database will be external/dynamic and file-based, allowing for the addition of new items, spells, consumables or champions (even ones not currently in the game), as well as possible synchronization with an online source to keep it up-to-date after patches.
I'm planning to use it for a general-purpose all-inclusive battle simulator in the same style as leaguecraft.com's, but more complete and with the possibility to test damage on another champion.
Would anybody here be interested in the project, or maybe even its source code / progress updates? I'm planning to write it in C# and it will be FOSS.
The project is currently in the initial planning / layout phase, and I'm working on a system to uniquely serialize item/spell effects: http://nand.pastebin.com/AuHuQJc4