Game Jam 3: The Preservening
Written Mar 31, 2024 - Projects
The rollercoaster of game jamming continues with our March entry.
Continue reading ↦
The rollercoaster of game jamming continues with our March entry.
Continue reading ↦
If I learned anything this past year, it’s that everyone thinks these chatbots are going to replace us.
Continue reading ↦
My friend Emil and I entered a game jam in January, another in February, and plan on one in March. This has been a rollercoaster of the highest order.
Continue reading ↦For a while now I’ve been wanting to create a simple social networked game. Basically just a chat room where you can explore a 3D world, in browser. Recently, since I’ve been entering game jams for fun and learning the Godot Engine, I decided to actually work towards this dream. For a start, I grabbed this super helpful starter project to learn how the high level networking feature works in Godot.
Continue reading ↦
I mentioned recently a desire to create more accessible computer games. In this blog, I briefly cover some early findings towards that goal.
Continue reading ↦
Free json viewer built using this library I found.
Continue reading ↦
I’ve had some new-found motivation to work on my big chess game, but hit a silly problem.
Continue reading ↦Every since my personal hero made a video about chess, I’ve had a somewhat renewed interest in the game. It’s been gradually increasing too - last year on my brother’s birthday I finally made a chess.com account, and since then I’ve played a fairly modest 46 games, with most of them being Daily games. Recently, however, I’ve had the desire to program something interesting related to the game. The Game Idea I want to make an online multiplayer infinite chess game.
Continue reading ↦
Last time I wrote about RuneScape, I described how I play the game without really playing it at all. But what if I like, did want to actually look at the game I’m playing?
Continue reading ↦
Getting an intuition for how different consistency models behave can be difficult, so I am working on some random little sandboxes to play around with different models.
Continue reading ↦
If a system is both cache consistent and PRAM consistent, then it is also processor consistent, meaning all writes from a single process are seen in the same order by all process, and all writes to the same location are seen in the same order by all processes.
Continue reading ↦
Another weaker model than causal consistency is Cache Consistency. In order for a system to be Cache Consistent, every process must see every write to the same object in the same sequential order.
Continue reading ↦
The weakest model of consistency for shared memory is local consistency, which requires only that a process observe its own operations in program order, and places no restrictions on how a process sees the operations performed by any other process.
Continue reading ↦
A weaker model than causal consistency is PRAM Consistency. In order for a system to be PRAM consistent, each process must see its own operations in program order, and operations from a single source must be seen in the order they were issued.
Continue reading ↦
In a sequentially consistent distributed system, all processes observe all write operations in some common order. A causally consistent system has a slightly weaker guarantee - only causally related writes must be observed in a common order, and processes can disagree on the order of causally unrelated events.
Continue reading ↦
A distributed system that meets the condition “the result of any execution is the same as if the operations of all processers were executed in some sequential order, and the operations of each individual process appear in this sequence in the order specified by its program” is said to be Sequentially consistent.
Continue reading ↦A year or so ago, in my lab’s reading group we read the famous power of two choices in randomized load balancing paper, and it gave me an awful idea - what if we applied a similar idea to games? As a very quick explanation, for the task of load balancing requests - basically, you have a bunch of servers handling things for you like fetching emails, and you want to spread out the work evenly - a common approach is to just pick a random server and send the next request there.
Continue reading ↦
This is mostly a reference for future me, or anyone else who wants to use https://tiddlywiki.com/ behind a proxy with apache.
Continue reading ↦
I have been playing like, a normal amount of chess lately. I’m not yet past the “don’t just move your queen to her death” phase yet, but I have noticeably gotten better since I rage-quit last year against my little brother.
Continue reading ↦
A few weeks ago I finally beat the game a few friends and I wrote a while ago, hag. This sparked a desire to get the game running on Windows, the operating system of choice for e🅱️ic gamers.
Continue reading ↦
I’ve occasionally found myself wanting to refactor code in ways that current free tools don’t make easy for me. I wish I had something to make it easier.
Continue reading ↦
Just a place to mess around with the most current version of my AI Game.
Continue reading ↦
I found an unfinished blog post from Halloween of 2017. Given the state of the world, it might be worth revisiting.
Continue reading ↦
I find reading two column papers to be bothersome on most devices. What can we do to fix that?
Continue reading ↦
I’ve been working late nights for an upcoming conference deadline, and over the past two nights between the hours of 1am and 3am I have completed what is probably the worst python library idea of all time.
Continue reading ↦
I have been asked semi-frequently to add LED strips to various things, so I figured I’d like something that lets me play with LED strip patterns.
Continue reading ↦Now I know the first time I wrote about my Model M keyboard I said it wasn’t worth it to leave a $10 dev board attached to the keyboard, opting instead to use an adapter, but I’ve changed my mind. My change of heart came about for two reasons: I couldn’t get the $5 adapter to work. Being able to remap keys on the fly is definitely worth $5. That second point is in reference to my recent blog post.
Continue reading ↦During my last summer internship, a thought popped into my head. I realized that it wouldn’t be too hard to stick an LED matrix under my graduation cap, to have one that would be totally unique. Well, it turns out someone beat me to the punch, but I could still make one that was totally unique by stealing ideas from other places too. Reddit’s r/place was really cool. I figured I could recreate that on a 32x32 board.
Continue reading ↦
Inspired by a lug talk on esoteric languages I set off to create my own.
Continue reading ↦
Prior to about a month ago, I had only ever attended one hackathon - my team came in second. I had to change that.
Continue reading ↦
I’m a week into my senior year, and I’ve gotten sick of using OneNote for note taking. As a linux user, I’m pretty much limited to the web interface or WINE, and I’d really prefer neither. I’ve also had plenty of issues with notes not syncing / getting lost in the cloud, which is more than enough of a reason to switch to something else.
Continue reading ↦
Despite the delay, I am still working on my AI/robot game thing. A while ago I added what I said would be my next steps, but never posted about it. So I’m doing that now.
Continue reading ↦
OK, I’m pretty excited. It might not have been clear what this project was, but I think this will clear it up.
Continue reading ↦
The language is coming along nicely. I refactored the evaluation function, moving out all of the function call logic into more digestible functions. This led to a few nice advances.
Continue reading ↦I’ve spent a few days now planning out more of my project. I worked on the language some more, and brainstormed ideas for blocks I would like to have in the program. I also decided to use phaser as the game engine for the building and simulation of robots. This decision was based off the presence of a physics engine and the ability to specify constraints on sprites, which will take off the heavy lifting of “constructing” robots.
Continue reading ↦For a little while now I’ve wanted to make a game to teach AI programming and robotics. Between school and my summer internship I was able to start it, and here I’ll outline some of my progress. The Project Idea What I want to build is a game in which robots are assembled by snapping together components. The robots are then programmed. The programs must define a run function, which is run every tick of the game.
Continue reading ↦I am currently taking a course titled “Hackers in the Bazaar”, which is, by all acounts, the greatest class ever. Anyway, we spent class today playing classic video games brought in by students. I brought in a SNES and a copy of Mortal Kombat). Additionally, I spent about an hour and a half yesterday creating something a bit special for the occasion. My dad keeps his old Atari 2600 up in my closet, along with a chest full of games.
Continue reading ↦For the past five months, I’ve had an old IBM Model M sitting on my desk. Specifically, a 1390572, a 122-key monstrosity. Ever since spending the summer typing on one of these old keyboards I have wanted to get this keyboard working, because it is very loud and very fun to type on. I found a converter for about $40 online, but that doesn’t seem worth it. The keyboard has this weird DIN-5 connector, where the pins sweep 240 degrees; I’ve never seen any connector quite like it.
Continue reading ↦For fun, I decided Wolfrat Bot needed a bit more, err, personality. So, I set off to make him one. After training an RNN for a few hours on my desktop’s GPU, I had interesting results but ultimately failed at achieving quite what I wanted. Anyway, I encountered some huge hurdles I found out AFTER training for ~8 hours that the way I was encoding the characters for the network input (and thus, the way I was decoding the network output) behaved non-deterministically between Python 3.5 runtimes!
Continue reading ↦The content of this website is on GitHub here. A nifty feature about GitHub are its Webhooks. I wanted to be able to add content here without having to SSH into my server, cd-ing into the www directory, git pulling, and makeing, as those steps are tedious. So, I set up a GitHub webhook to POST to a PHP page on the server. The basic form of this PHP page is just: <?php passthru("MYSCRIPT.sh"); ?> Where MYSCRIPT.sh is just a script that pulls and makes the site.
Continue reading ↦For our final project for our Data Structures course, my group decided to make a GPS app that finds the path with the minimum time spent outdoors. We wrote a python program to allow us to map our campus as an undirected graph, with vertices at the intersection of every outdoor path, and at every door of every building. To decide paths, it uses Dijkstra’s Algorithm. To achieve our goal of deciding paths with the least time outdoors, we assign weights of 0 to all edges that connect nodes within buildings, and for each other edge the weight is the linear distance between the nodes.
Continue reading ↦This project is one that has been in development for a few years now, and it probably won’t be finished for a few more. It is one that has grown in scope considerably, and is really the result of several smaller projects. Currently, the end goal is to have a fully working arcade machine of my very own - running a game I wrote on hardware I built. The project began at the end of grade school when I decided to try making my own fighting game.
Continue reading ↦My summer job always ends up being a grab bag of different assignments, ranging from IT tasks such as installing a new network switch or deracking an old server to more developer tasks such as writing a document management program. Most recently, however, I was tasked with updating some of their legacy programs that run on their IBM AS400. The more impactful change I was instructed to make was to reverse the sort order on a list of jobs for a given company - since 1991 they were listed in ascending order, meaning users had to scroll to get to the newest jobs.
Continue reading ↦Back between 2008 and 2011, I spent a fair bit of time on FunOrb. One of their most interesting games was their last official release, Void Hunters. Unfortunately, FunOrb did not last much longer than that, as there has only been a small handful of updates since then, and with the death of NPAPI Plugins, the Java-based gaming site has virtually no chance of being revived. Some time around my freshman year at Notre Dame, I decided that it would be fun to recreate the game.
Continue reading ↦A friend came to me with a request to create an Audacity plugin that, given two stereo audio tracks, takes the second audio track and ensures that it stays X decibels below the first audio track. The project did not take long after establishing just what it means for a track to be quieter than another, despite me having never written anything in a LISP dialect (Audacity uses Nyquist/XLISP) and some of the oddities of Audacity that I will describe below.
Continue reading ↦
Once again, I was playing around with Jupyter. This time I was more interested in seeing how it handled NetworkX. It seemed to work fairly well, though the kernel died using above 500 connected nodes.
Continue reading ↦
I was playing around with Jupyter, namely its feature that allows exporting as a markdown file, and since this site is built with Hugo, a static HTML generator that translates markdown, I thought I’d see what the results looked like.
Continue reading ↦My friends and I primarily communicate through a GroupMe chat that we named Wolfrat. To liven the place up, I thought I would add a chatbot. So, I quickly threw together (over a day or so) WolfratBot, which uses the GroupMe bot API. The API HTTP POSTS a given callback URL, which is set to a WSGI script that decides on the appropriate reply. The program is very modular, and new functionality can be added without disrupting any other modules.
Continue reading ↦For my Fundamentals of Computing I class final project, I decided to make a shmup. The game is played at a faster pace perhaps than it should have been, but I enjoyed making it. The graphics are very minimalistic, consisting almost entirely of circles. The game features a half-decent level intrepretation system, where levels are stored in text files with simple commands to handle enemies and other things. The system had support for branching and conditionals, though the only condition allowed was time.
Continue reading ↦