Log In  


I know most people aren't using the "User Blogs" section of this website for random thoughts and updates style blogging. But it doesn't make much sense to me to blog about it elsewhere if I don't already have a presence somewhere doing so (which I do not). So I have decided to do the occasional blog update of my Pico-8 coding here.

--

I have more or less finished my space shooter (Proxima B. I posted v0.9 a bit ago, and have finished 0.91 but have yet to update online. It is mostly just bug fixes, and a few additional features (better boss death animation/sound for the level two boss).

I have also tried out a number of different game styles in the interim, just playing around with basic skeletons. The two that I am currently pursuing are a two player board game port and a puzzle platformer.

The puzzle platformer is adventure time themed and will involve the ice king rescuing his beloved penguins, who have become lost in the fire kingdom. At the moment I have basic physics worked out. The movement will be more like turn based movement than the standard running and jumping of a platform game. It will involve creating ice blocks to be able to walk across spaces and allowing the penguins to run up the screen (similar to a lemmings style system). At least, that is the current plan, and I have not worked out all the kinks. Some initial inspiration was taken from the NES game Fire 'N Ice. I am having trouble getting some of the physics I want to work properly (such as ice sticking to other ice and either falling or staying aloft as a group based on at least one piece being on ground or not). Here is a very early GIF:

I'll improve the look and the animation at a later point.

The second game has been developed a bit further. It is currently playable in two player mode. It is an adaptation of Isola, also known as Isolation. Currently, two players can play the game to its conclusion, I will implement an actual check for win state later tonight, but at present the players need to know when the game is over. My plans include a menu for choosing between one and two player mode, as well as a scrolling, or maybe still, rule set. Once I have the two player done I may post the cart, as I think the computer player AI will take me some time to work through.

Does anyone have any advice for AI methods/implementations that function well for pico-8's resources? If I have to I can always just make the AI semi-random with just some basic guidelines. It wouldn't be a challenging player for someone that knew the game, but I could probably make it a challenge for a beginner with a pretty limited codeset.

Here is how it is looking at the moment:



Just a first thought about AI. I think you might need to figure out some way to do lazy evaluation of the game tree to make it work with Pico 8 resources. Whether or not that is realistic... I dunno


I dont know what that means, so I will google it. Thanks for the tip!


Well a game tree is just all the possible moves and combinations of moves in a game. A table could represent a tree node, but if you build up a whole game tree it could be very large, even for a small board like yours. Lazy evaluation let's you only calculate the game tree nodes that are needed. The best tutorial I have found for that was in Land of Lisp or Realm of Racket. However, those languages have support for lazy evaluation. I think Lua can do it too though. I will try to mess around with that when I get a chance


Awesome! Thanks for the info. That sounds similar to how query paths work for neo4j (probably not in actuality, just in broad concept).

I definitely agree that even in a 5x5 grid storing full game state for all possible moves would be way too much. Particularly for this game. It mostly just plays based on predictive rules (based around general ideas of good play), looking out a turn and a half. I could definitely make the predictive model deeper, but I think the eventual returns on that would get smaller and smaller and not be worth the space/processing (maybe one or two levels deeper could see returns though). Really it plays well through the opening and middle game. I may need to give it separate parameters as it nears the endgame. It seems to not realize it has won sometimes and plays a dumb move because it makes sense with the more broad parameters that it has been given.

This is definitely a subject I'd like to read more on and know more about, particularly so now that I have done it my instinctual way so have that to compare and contrast against.


Maybe implementing a game tree for just the endgame? Seems like there's fewer possible moves at that point. I don't exactly know how the logic would work but maybe when you get to a certain turn you can build a game tree and choose paths that lead to more winning end positions.


I've implemented an AI for Lines of Action.

It was straight negamax and I wrote node states direct to user memory using peek/poke for speed.

Doing it with tables for nodes worked fine but was just too slow.



[Please log in to post a comment]