Your music is very nice, thanks for sharing it
I find it to somehow have a pinch of melancholy. Curiously, during development i did considered for a long time using a theme i considered more melancholic than the one in v1-0. It somehow fits better with the Intro and the Story of the old reclusive mage. In the end though, i dropped that theme due to the licensing choice of the author (cc3) and the fact that i found the gameplay to require something that would bring a little bit more energy (since the gameplay is somewhat fast-paced). The final intro choice for v1-0 thus ended up being both one that i find a little melancholic and also a little motivational. Since the option did arise though, i would say yours might be a great addition to the intro and story scene (with maybe some black screen silence time in between when the player clicks the intro option, so as to not cause an imediate switch between the two musics).
- For items it could be somethings like potions that could maybe change the spell width and or color so that it helps you aim better or hits a bit harder than the default.
Or another idea, just a XP system / kill counter to give the impression of progressing and getting stronger.
(PS I looked a tthe code and I understand its hard work so these are just ideas from my dreamy head)
The potion thing is quite a good idea. I am not entirely sure how i would implement "aim better" (except if the missile were to automatically aim the enemy despite the player clicking elsewhere), but the spell width adjustment seems to be pretty easy to do.
Edit: I actually misunderstood width for time. Yes, chaging the colision area of the missile based on an effect being present is indeed easy to do and would really make aiming easier. Changing the spell effect time of lexiko scrolls 4 (freeze enemies) and 5 (speed boost) based on a potion and a timer as mentioned, is also doable too.
I noticed that this part is crucial to the refresh rate of the images
I am asking myself, what if that setTimer would be VERY low like 10-20 ms only so that the image as no stutter/flicker. But then lower all player/ennemies movements so that it doesn't actually play faster but just more fluid images ?
You are absolutely right there. I actually came to the that conclusion when i was nearing v1-0
Drawing and calculating all interactions should not be done at the same time intervals (i.e., a single routine for both, as is in the current code). This simplification comes at a cost of being unable to achieve higher FPS without affecting gameplay.
I have found a easy way where score could be counted
I really don't think a beam (lexiko 2) hit should count 10x more score (unless you are using the HP of the enemies as a direct 1:1 score indicator). Other than that, you actually found the right place in the code that accounts for succesful hits.
Re. speed, I noticed the higher up the map, the slower it got. So something was accumulating I suppose.
I didn't quite noticed speed being changed the more you move up in the scenary. I did noticed however, that when you shoot many times in quick sucession near lots of trees and enemies, it may indeed affect maximum FPS (the FPS is currently capped by the SetTimer of the DrawScene routine, so in most PCs it is not noticeable). This can be a greater problem on older computers. And curisouly, even though CPU usage on my notebook does increase in such cases, it never really goes too high (so in theory, there should not be a FPS drop, just a higher CPU usage?). I am still looking into this.
Also, there is one thing that i did noticed accumulates the more you move up: memory usage. It begins around 160MB, but can go higher than 200MB before you reach the end of the game. I have also not found the cause of this memory leak yet (unless its from the attack objects, which currently do accumulate over time. And if this is the case, it may also explain the drop in speed you are noticing, since drawattacks() function loops through all existing attack objects, including inactive ones, which are then filtered by a subsequent conditional).