Jump to content
Search In
  • More options...
Find results that contain...
Find results in...


  • Content Count

  • Joined

  • Last visited

Community Reputation

19 Retributor

About Daeron

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. GAPI1 is the first algorithm for computing pile-ins. It serves primarily as a proof of concept, that using a genetic algorithms works to discover pile-in strategies. GAPI1 kicks off the project to develop a more sophisticated and robust A.I. that can handle more complex pile-ins, and adheres to the game's rules and physical nature more closely. It's available here: http://tools.druchii.net/AoS-Genetic-Pile-In.php The algorithm of GAPI1 Like any genetic algorithm, GAPI tries a number (population size) of random solutions. These solutions are evaluated, and the best are selected for reproduction, recombining their properties. Over the span of a few generations, the best combination of properties is pushed forward. So how does that translate to pile ins in GAPI1? GAPI1 moves all models randomly, each in an arbitrary direction and distance (up to 3"). GAPI1 then evaluates which one scores best: Points are gained for being in combat range Points are lost for breaking unit coherence, being out of reach, or stacking bases. A maximum score of 200 can be scored per model (being range, no stacks and not breaking coherence). The worst solutions are deleted, matching the crossover rate. So at 70% crossover rate, only the 30% best will remain. A new generation is made: New offspring is produced, according to crossover rate. So for 70% crossover rate, 70% of the new generation will be offspring by combining parents. Mutation is applied throughout this proces, according to mutation rate. The remaining population is filled with exactly 1 clone of each parent. Cloning is different from copying, in that it can introduce mutation. Back to step 2 In-depth look in GAPI1's elements The Chromosome, is the pile-in strategy. A gene is a single pile-in move. A randomly generated gene is a random move of a single model in any direction and distance up to 3". The genes are strictly ordered, with the position of the gene denoting which model is moved by the pile-in as well as the order in which the model is moved. Therefore, models are always being piled-in from left to right. A mutation replaces one gene with an entirely new one. So, one move in the entire pile-in strategy is changed by a random move. A mutation does not retain any information from its source, other than the starting position of the model. The fitness function is rather crude, but seems to work: The fitness is the sum of a per-model score only. There is no overarching scoring. +200 points for a model that is in combat range of an enemy. -400 points for a model that is stacking bases (friend or foe). -400 points for a model that has no friendly model within 1/2". -1 point for each mm of distance to the nearest enemy. A single model can score at most 200 points, and a whole lot of negative points as worst. This ensures that pile-in strategies that get all models in combat, but break coherence or stack bases, will lose out to strategies that are not perfect, but don't break any rules. Still, it is important at the start of the evolution to support broken formations as long as they also evolve "in the right direction". The Elimination rate is the amount of bad solutions being removed, which is the set to be the same as the crossover rate. The remaining population (100% - crossover rate) are the only eligible candidates for offspring. As a result, we can not support 100% crossover rates as this would delete the entire population. The Crossover rate is the percentage of the new generation that will be created through recombination (offspring). This is implemented as a fixed size with respect to the population, not as a chance for offspring to be a recombination. Uniform parent selection gives all survivors of the elimination an equal chance to produce offspring. Their fitness is no longer taken into account. Furthermore all parents are cloned. This is a logical consequence of how crossover works in GAPI1. A crossover rate of 70% kills 70% of the population. For the new generation 70% are children from recombined parents. This leaves a 30% to be filled by clones, which is the exact amount of parents left. Tweaking the parameters Population size determines how many pile-in strategies are tested in each generation. A larger population permits more exploration per generation, and thus increasing the chance of finding a solution. But it also requires more calculations per generation, where a smaller population might try several generations with the same effort. Crossover rate determines how many of the new generation are off-spring by combining 2 results. Currently, this also indicates how many of the worst results are removed to make room for this offspring. The bigger this number, the stronger the selection. This will increase the focus to a single solution, but also kill off looking for creative answers. Mutation rate increases the chance for a single pile-in move to be replaced by a new one. This permits the algorithm to get unstuck, for example when it has 2 models blocking a third. A very high rate can make the program unfocused and jumpy. On the other hand, a low rate will limit the AI's ability to look at juggling about a few models. What works What seems to work is a high population (200+), high crossover rate (80%) and high mutation rate (20%). Arguably, the search space for bad pile-in strategies is so big that it a strong selection quickly narrows down the search to a reasonably good combination of individual moves. However, this also makes the algorithm "stuck" when 2 models block a third. And so a high mutation rate is required to move models about a bit.
  2. Daeron

    GAPI - Introduction

    What misfortune made you check this blog? Well, now you're here, let me explain what the blog and project is about. GAPI stands for Genetic Algorithm for Pile-Ins. Genetic Algorithms are a form of machine learning (or artificial intellgence). They are particularly suited to find solution where a more intuitive solution to a problem is required. Pile-ins are a key element to Age of Sigmar, where a lot of variables meet. The formation of a unit, the clever use of a piece of terrain, the combat range of melee weapons and potential bonuses to pile-in moves all come together at this point, and they can influence the combat performance of a unit greatly. But because of the fluid nature of pile-ins it is difficult to calculate exactly how good or how bad a situation is exploited by a player. Then, there is also the opponent's ability to counter the plan. If we can not exactly calculate the effectiveness of formations, combat range and terrain, then there seem to be two alternatives: Testing ideas against an opponent. Empirical research. The former requires a high availability of opponents. The latter requires a vast amount of data. This is where a program that executes steps of the game for us can play a valuable role. Whether GAPI will eventually become that program remains to be seen, but that is the mission. GAPI will be designed to automate pile-ins, for any situation we throw at it. We start with a proof of concept, and aim to gradually improve the A.I.'s: Effectivness: its ability to tackle different situations Efficiency: the speed to find a strong pile-in strategy Accuracy: how closely it follows physical and gaming restrictions A tool will be published where GAPI can be displayed and seen in action.
  3. Oh, agreed. It goes both ways. I don't want to see old models invalidated just because. I think legacy armies have a place. But I see the mix of old and new players being brought up. I think new players are more worried about the requirements and fairness of the game they are in than the age of the models. I think they'll experience the demand to put 2K on the table, against a seasoned player as a bigger issue than a 500pt friendly game against TKs.
  4. Just throwing in my 2 cents. I'm a casual, and a noob, and identify with new players more easily than the old guard, even though I'm an "old player" myself with over 10 years in the hobby. I recently made a vid on it (Your tournaments suck, don't worry the title is just for dramatic purposes). I don't think the old models are the issue, not even the old scrolls. Frankly, I doubt little Timmy, the new kid in the store, gives a damn about new or old models as long as they look cool on the table and he doesn't feel cheated in his game. I'm not worried about the old models, but the players that come with it. It was a very tournament focused crowd, and it weighed on the community. That old gang also gave a lot to the community, from podcasts to blogs to tournaments. But when was the last time you stepped into a gaming club that didn't partake in 2.4K tournaments at some level? All I found in my country were tournament organised clubs. High points was the standard. It was the only way to PUG and compete. It had become such a norm that playing sub 2K was considered a one-off or a compromise as a show of good faith in the noobs. AoS offered a reset, and it has worked reasonably well so far. I've seen stores promote small games more often in 1 year time than I've seen them offer for WFB in the whole of 8th edition. Just put yourself in Timmy's position, and ask yourself what he'll find worst: playing against good looking models no longer available for sale, from some legendary past, or being told that the box he got for Christmas was cute, but he'll need 3 more before being allowed to participate? Because nobody plays 500-600pts games and 2K is the norm? My biggest concern, and gripe, with the old gang isn't the age of their models, but the elitism that 8th ed had acquired. And that old gang IS GREAT. It deserves to be said. They are the rockstars of the community, and I'd gladly honour them for it. But the most annoying, toxic AoS players I've met thus far are old timers with 8th ed (or older) models that just mashed up the most powerful ****** and roll their eyes with boredom after tabling their opponent in round 3. I don't think that's a coincidence. If writing off the old models offers a guarantee to be freed from that ******, then I'd burn my Dark Elf army to herald Age of Sigmar... Although even that gesture was claimed by 8th ed elitists. Anyhow. If you show continuous support for new players, in a format that's playable and challenging at their level, I doubt they'll be worried about seeing a skeleton with a TK design instead of a VC design. They just want to play and have fun. Whether old models are "balanced" is more of a concern for the tournament crowd.
  5. Greetings, Just introducing a new project, Genetic Algorithms for Pile-Ins, which is going live in a few days. I sometimes see discussions on the value of formations, or quantifying the value of range on melee weapons (or bonus distance on pile-ins), but we never have a good way to examine this. This is a project to create a decent AI over time that can handle pile-ins pretty well, and can then serve as a testing platform for formations and pile-in strategies. Although I wouldn't exactly call it empirical research, it does give us a "neutral" opponent that will try to counter what we throw at it. It could prove to be a stepping stone in examining the value of combat range, formations and even terrain elements. Anyway, here's a video with the introduction:
  6. Daeron

    Quick maths

    Right, that seems like a close match. We both used the same trigonometric approach, but you used a Discriminant. I defined Y = (16mm + x/2) and then did: 32^2 = 25.4^2 + Y^2 Y = 19.4638... x = 2* (19.4638... - 16) = 6.9276.. It's not worth flipping a table for... but it's interesting to see such an error margin between both calculations.
  7. Daeron

    Quick maths

    Ohh, a quick correction. I took 25.6 mm for an inch. It should be 25.4 apparently. I get that confused every once in a while. Redoing the maths: 32^2 = 25.4^2 + x^2 -> Distance center-to-center is almost 39mm or almost 7mm distance between both bases. (slightly over a quarter of an inch).
  8. Daeron

    Quick maths

    Intriguing. I was a bit surprised by how small the value was. Just trying to check how you did it (because that's the part I'm most interested in ;)) I'm assuming you modelled this like an isosceles triangle, with the equal sides being 32mm, representing the center-to-center distance from the front line models to the second rank model. Then the height of that triangle can not exceed 1" or 25.6mm. Pythagoras gives us half the distance between the center of the two front models. 32^2 = 25.6^2 + x^2 The positive x is: 19.2mm. So, the total center-to-center distance is 38.4 mm. Minus the radius from both bases, this becomes 6.4mm, or a quarter of an inch. Of course, if we assume our target is a 32mm base as well, we could get closer. Is that what you did?
  9. Daeron

    AoS Combat Calculator

    Greetings! The Druchii.net Tools (and this combat calculator) are now open source code. The code has been uploaded to a public repository over at GitHub: https://github.com/DaeronSyriath/Druchii-Net-Tools This should make it possible for people to view, or work with their own copy of the tools, and.. to collaborate. With that out of the way, allow me a brief moment to explain this choice. What started as a fancy personal project quickly developed to become my pet project. I felt it could serve the community better under the wings of Druchii.net than my own (dying) blog. I hoped it would improve exposure for both, and give Druchii.net something unique. I didn't notice until later that the appeal of having something unique would grow on me and made me protective about the code, more so than it needs. I concluded this was counter productive to another goal, one that I've strived for, for a long time. That goal is to contribute to building a theorycrafting community or sub-culture within the war-gaming community. Preferably, with shared knowledge and a solid basis accessible to all. I think that, given the code the community is a good way to support that cause. I'll keep updating and contributing to the community, not just by making the tools available but also the knowledge on how to build them. I firmly believe this is the best for the community. The next step is probably to improve the quality of the code, documentation and the design of the program. This should not affect the users, but it might prove relevant for future endeavours, be they my own or those of others. Thank you for reading! Happy coding! Daeron
  10. Daeron

    Site Logo

    http://www.orderoftheathanor.eu/tga_logo.html It now has all the adjustments you asked. I took the liberty to make it a good rehearsal of my geometric functions. The script produces an SVG file with a single path, so it can easily be coloured and whatever. You can use the sliders to change the settings a little. The "code" box is something for you, so you can save the settings if you ever want to get back at this. The download link gives you a download of the file. Note: it has a transparent background and while fill colour. So, unless you have a coloured background, it will be hard to see. The page wrapped it a div with a dark background. In attachment, the SVG file and a converted PSD file. logo.psd logo.svg
  11. Daeron

    Site Logo

    Idid the works but I can't upload it from the iPad. I'll upload it in two hours time or something.
  12. Daeron

    Site Logo

    I'm not sure if I can be a help here... I'm not an artist or expert, but I know maths and Scalable Vector Graphics (it's what powers my combat calculators). Here's a quick and dirty reconstruction of the image in SVG. It's web based technology so it should import in a webpage with relative ease. You can style it with CSS.. so the webmaster could have some fun with it. Let know what needs to be improved on it and I'll try to improve it tonight. I put the formulas to calculate this image in a spreadsheet, so radius, line thickness and angles can be changed to heart's content. PS: it's white.. so you'll need a non-white background to see it. I added a black version just so it shows on the screen PPS: check the file size. That's the magic of vectors for ya. Less than 1Kb and it could be printed on a poster the size of a football field without loss of resolution tga_logo.svg tga_logo_black.svg
  13. Daeron

    Mistweaver Saih: what does it mean for Aelfs?

    It's all speculation from here on. With "glittering and self-centred" now being the traits of the Stormcast, the (High) Aelves will need a new role in the AoS realms. My bet is that they'll focus more on the enigmatic nature of the Aelves, regardless of the faction. With Stormcast being the paragons of righteousness, the Aelves can be a little more.. complicated. Ethically, I mean. This model seems to show that well, I think. As for the style, I get the impression that the models I bought in 8th ed are in this middle zone and blend in nicely with both the older WFB models and will blend nicely with the newer AoS models. But the old WFB models don't blend so superbly with the new AoS style. The old dark elves that I love so much are making way for a new breed of elves and I don't see them mix too well. It's why I'm keeping my old army on square bases in case my buddies want to play WFB.... ... and started collecting a new army for AoS. If all the aelves look as good as these, I may be tempted to try a small force of them.
  14. Hey, sorry for posting another theorycrafting tool so quickly (it's the last one for this week, I promise ;)) but I thought it might interest some people. I built a tool to compare the point systems of the various AoS comps out there. I just added the SCGT comp to it. It's available here: http://tools.druchii.net/AoS-Comp-Comparator.php The tool is still in development and using old scrolls only for the time being. It will be updated with box plots, keyword pairings and the latest scrolls in the next few weeks. I have a short video on how the tool works here:
  15. Daeron

    AoS Combat Calculator

    Yes, it can. But you have to use a small "d". For example, 3+, 3+ and 5+ save with 2d6 attacks and d3+1 damage. Also: As you can see.. this bug has been fixed Thank you for reporting it!