I saw CallMeKevin play your game and immediately bought it. I played it nearly everyday since then, unlocked everything and am optimizing still.
I work as a software engineer since 20 years, mostly in the Java world, and found the start of your game and every step very good explained and easy to follow. I would recommend your game for everyone who wants to start programming but I have some recommendation that imho would improve your game.
- Keep the breakpoints. After every change in a window/file the breakpoints are removed. If possible they should only be removed if you actively want them removed or remove the line. A pause()-command that you could add to your code would be nice for debugging.
- When the game stops at a breakpoint and you have many lines of code it is sometimes hard to find the line. With an extra window where all the breakpoints are listed you could click on them to jump to the position, show which one is active and you could also add the "Execute one step of code"-button there. I have several empty windows located near larger windows with code so I could click on it because I never had the idea to look for a shortcut. I had some timed-runs where I overlooked several breakpoints and with an extra window this would have been maybe easier to spot so I could have deleted them before.
- Highlight variable names that are used in a global and local context before the code is executed. I know you can deactivate the warning but I would rather keep it and it is very annoying to restart your run just because you named your variable to something global.
- When you are on a timed run make the code readonly and editable after pressing OK. The window where you changed the code looses focus so it can be difficult to find the position where you changed the code.
- When you run your game without steam in the background there is no recorded highscore. Maybe add an extra offline highscore or change it so it is saved everytime. I really like that you don't need steam running to play your game I just want to know my records ;-)
The next ones are more on the would be nice side and aren't that distracting like the last ones.
- When you call get_cost() on Unlocks, that have only 1 level (like Polyculture), that are unlocked should return None like Unlocks with multiple levels on their highest level.
- Sort the Items on the top showing how much you have of them. Maybe just from A-Z or give them a fixed position. Currently it looks random but I don't know why.
- When you are stepping line by line through the code keep the stop execution button as an option. Now you have to double-click on the start-button which feels weird.
- Add a waste()-command so you can remove Items. I currently have more than 80k of Power and it takes very long just to have the drone move around to get rid of it. I just want to try things out without starting a timed run so every Item starts with 0.
- Add a search function so you can find stuff without an external editor.
- When selecting a variable then mark all occurences of the variable in the current function.
- When you click on a variable with underscores (like selected_item) then select the complete word including underscores.
- Add a shortcut like CTRL+SPACE to trigger the code-completion-helper. Currently it only shows when you type something new but closes when you mistype.
All in all your game is very cool and I'm looking forward for your upcoming ideas and updates.
All the best and happy coding.