-
Game of Life Party 2
This is a new version of my previous project, Paint With Life, implemented with WebGL2 rather than the limited
2d
context offered by HTML Canvas, which is not always GPU-accelerated.It's currently lacking many of the features the v1 has, and it still needs some optimization, but it's usable as it is nonetheless and generally runs at 60fps.
-
Game of Life Party
Game of Life implemented in JavaScript and ReactJS... with a twist.
It has different render modes, which make it really interesting and somewhat trippy. It makes really cool animations or visuals. Try it with EDM like W:/2016ALBUM/, jazz rock like Miles Davis' Tatu or whatever trippy/visualization-friendly music you like.
To use it just move your mouse over the screen and a bunch of controls will show up. You can also use the keyboard shortcuts.
Currently, you can't manually edit cells, but you can place some known patterns in random positions: gliders, lightweight spaceships and bi-clocks.
To see some cool visuals set cell color to random, clear mode to fade black or plain black, make it run faster and faster and bang the
1
,2
and3
keys like crazy. -
Minesweeper
A clone of the good old Minesweeper that came pre-installed with Windows 98/XP.
-
Parallax Carrousel
A simple carousel implementation with parallax background. Looks pretty neat if I say so myself.
-
2048
Just a clone of the famous game.
Play it with the arrow keyboard keys.
The aim of this project was to have an auto mode where the game would play itself, using different algorithms, to see how high a score each algorithm could reach while watching it "play" live; but I never really got to it.
There's a cool project like this already and probably a dozen more, as well as mind blowing things like AIs learning how to play Super Mario World and even going as far as finding and exploting bugs in QBERT and Super Mario Bros to reach high scores.
-
Sudoku
A clone of the famous game. I was a bit bored with usual day-to-day coding, felt the need to code something a little bit different. I wondered how a new game board could be laid out in a way that would be solvable and wouldn't lead to impossible combinations.
I initially wrote an algorithm that would walk over every cell (just two nested
for
s), figure out which values were available for the cell considering which values were already taken in the same region (the 3x3 matrix the cell was in), row and column.This first approach always led to impossible combinations: a lot of cells would be left blank, since there were no values they could be set to that wouldn't go against the rules of Sudoku.
Then I basically made this function recursive, walking the entire board for each possible combination and stopping when a complete, valid board was found.
Boards are generated randomly by shuffling the array of possible values for each cell. For example, if cell at (x = 3, y = 3) can have values
[1, 2, 3, 5, 7]
, the algorithm will try all of those in order. To get a different board each time, it shuffles it so the possible values become[5, 3, 1, 7, 2]
, etc.The project isn't quite finished. It's lacking the following:
- Counting mistakes made
- Checking whether the player has won
- Keeping score history (wins, mistakes)
- Button to create a new board
- UI that doesn't require keyboard
- Learning react native and trying to get this to run on mobile
- Difficulty levels (how many and which cells are hidden initially)
- Initial hidden cells are chosen at random, but whether the game is actually solvable isn't checked
- Support for setting nodes, allowing the user to write down values that they consider possible for a cell without committing to them
- Keeping cells squared, which apparently isn't doable with just CSS unless resorting to horrible hacks
-
Walking Pikachu
A super simple demo of a walking Pikachu on a forest background, using html5's canvas.
Move Pikachu around with the Arrow Keys.
-
Legend of Ether
This was a project Walter Zalazar and I worked on for the EthBuenosAires 2018.
It's a Proof of Concept for a decentralized MMO RPG that runs on the browser using WebSockets and stores information such as ownership of items in a smart contract in Ethereum.
I go over the motives for and challenges of building a decentralized game that goes beyond the extremely basic complexity of Crypto Kitties, Gods Unchained and the likes in the readme.
The challenge basically boils down to Ethereum not scaling anywhere near what's needed for an MMO RPG, and the proposed solution is to use a hybrid centralized-decentralized approach, where a traditional, centralized NodeJS server ensures players aren't cheating, while things like item ownership and player levels are stored in smart contracts, cryptographically owned by the players.
-
Secret Project
This is my biggest project to date and the one I'm proudest of. It has also been pretty much a life-long ambition.
I used to have it open source, but I decided to close it for the time being.
I'm already happy about it since I'm pretty sure it's partially responsible for me landing my last two jobs: in both cases the technical interview was skipped after the technical interviewer reviewed the project.
I still haven't decided what to do with it. I have some ideas on how to turn it into a business with revenue, but I'd also love to just open source it and make it freely available.