I'm one of those weird people that likes to come up with algorithms and write code, for fun. I've found that video games offer a fun and exciting way to generate unique problems to solve. The possibilities are as limited as your imagination.
I'll generally limit the scope of my projects on this site to a single concept or game feature. I'll see something, think it's cool, and become obsessed with figuring out how to implement it myself. When I first started programing with Arduinos, I figured you had to be a mathematical genius to program something like the hookshot from Legend of Zelda: Ocarina of Time. The perspective changes, raycasts, collision handling, material checks, 3D transformations, and animations seem almost trivial now.
I've actually made dozens of small, dumb games. It's a fun way to explore new techniques. I never bothered to keep any though, because I figured no one would really care about programs made in an obscure language. I'm also not much of an artist. However, a relative that works in technology suggested I put some up here anyway, so here we are.
(1/10/2021) My latest project, still very much a work in progress. I suggest playing in Firefox. Chromium based browsers (Chrome, Edge) don't render all the PBR texture maps properly. This results in flatter, less impressive surfaces as many of the fine details are lost.
The idea behind this was to experiment and learn more about the physics engine within Godot. Movement is achieved by applying torque to the marble and letting the simulated friction between surfaces handle the rest. This is in contrast with the standard practice of using vectors for movement.
If you aren't used to playing PC games, the controls may feel rather unintuitive. However, if you have spent some time in an MMO like World of Warcraft than you should feel right at home. Controls are as follows:
W - Roll Forward
A - Roll Left
S - Roll Backwards
D - Roll Right
Space - Jump
Right Mouse Button + Mouse Movement - Rotate Camera
Left Mouse Button - Activate Power-Up
I have to admit, I thought I was being very clever when I decided to call a Connect-4 clone TicTacToe++. I guess you do try to line up a certain amount of tokens in both games. Stupid name, though.
The main purpose of this project is to demonstrate my mastery of multi-dimensional arrays and elegant control structures to operate on them. Don't expect much of a challenge from the CPU opponent. In summary, all the AI really does is choose a random column, ensures there's at least one empty cell, and drops a token if so. If not, it keeps trying until an available cell is found (or it reaches the end of the list). GitHub repository can be found here. I wrote the code in the files under "Scripts". Everything else was generated based on my actions within the built-in GUI editor.Â
Ok, time for something a little more impressive than a board game with simple button controls. I'm thinking something similar to the good-old classic space shooters, Galaga and Space Invaders. Keyboard controls, 3D graphics, more object-oriented concepts within the code (although how GDScript handles classes and inheritance is pretty awful). Maybe even some sound effects and a little 80s style chiptune beat?
Update 1: Had a couple hours this weekend to get started this, and wanted to post what I have so far (although it's not much). I basically just wanted to get a player controlled ship moving and firing, and that's exactly what I have. Also added some "bad guys" that just sit there, and look exactly like the player. There's also a basic 2D sprite explosion when the enemies are hit by your weapon. Going to replace this with some cool particle effect in the future.
Code can be view here.