Text
Pretty soon I'm planning to change it so https://aezart.com points to my personal home page (once I build it) instead of my tumblr blog. For the sake of avoiding link rot, I'll set up a redirect from aezart.com/post/[whatever] to whatever the new URL for the blog winds up being.
Basically, I want to set up a web presence that follows the standards of the indieweb, and I want that presence to be at the root of my aezart.com domain.
0 notes
Text
I never want to be marketed to
I never want to be marketed to. Ever. Let me be.
Apparently I am the first person who has ever said this.
0 notes
Text
Game Jam Day 23: Magic Crystal
Whoops I didn’t work on the game for two weeks.
I’m finding it hard to focus on this thing, and have no real idea where I want to take the project from here. Mostly I have been distracting myself with getting into OSR tabletop gaming instead.
Today I forced myself to actually get something done, and finished working on a “magic crystal” gem.
You can’t click on a magic crystal directly, but when you capture one, all gems matching the type of the gem you did click on get changed to a random type. Useful? No idea.
The tricky part was getting the game board to lock out all other clicks while the spell effect was applying. It was assuming it only ever had to wait one second for the usual “gem capture” animation to play, but this gem needs about 5 seconds before it’s safe to click again.
I wound up adding a “special_playing” flag to the GameState singleton, which the crystal flips on and off at its own discretion. There can only be one crystal on the board at a time, so I don’t have to worry about multiple crystals interfering with each other when setting the flag.
youtube
0 notes
Text
Game Jam Day 10: Music
No video today, because it’s really late and I’m too tired to record. I’ve kinda been losing steam the last few days. Not sure what I want to focus my energy on, now that the main gem-clicking mechanic is working. I still need to come up with spells for the remaining gems, then I really don’t know what I’m going to do from there. I guess the puzzle mode?
Tonight I started working on music to get away from looking at code. I made a little background track in LMMS using a few DSK instruments.
0 notes
Text
Game Jam Day 8: Refactor, Spell Tweaks
I added another spell today, based on the water gem. It randomly moves each row on the board one tile to the left or to the right.
Since this wound up duplicating a lot of the gem movement and spawning code from the standard click-handler, I spent some time refactoring the code. Ran into a nasty issue where the code to create a nice coordinate-sorted array out of the gem collection really didn’t like gems trying to move off the edge of the board, which took some time to iron out.
I also added more randomness to the sun and moon spells, so that each possible target gem only has a 50% chance of being affected. I like a little chaos.
I’m considering even more chaos by making spells trigger automatically when you’ve collected enough gems, rather than being user-initiated. Not sure about that yet.
youtube
0 notes
Text
Game Jam Day 7: Spellcasting
I took Thursday and Friday off from game jamming, because I don’t want to push myself too much. Weekends are important. Plus, I had a big D&D game to prepare for.
Today I fixed a minor annoyance where the game was going into “wait for animations to complete” mode even if clicking a gem wouldn’t actually trigger any movement. Easy fix, just count the number of gems that a click would capture, and return early from the click-processing function if the count would be zero.
The big thing today was the initial work on a spellcasting system. Each type of gem is tied to a different spell you can cast. Collect ten gems of the same color, and you can cast that spell. Right now I’ve got three spells working:
The sun spell turns leaves into blooms.
The moon spell turns blooms into leaves.
The time spell gives every sun a 50% chance to turn into a moon, and vice versa.
The leaf, bloom, and water spells don't do anything yet.
youtube
0 notes
Text
Game Jam Day 4: Art
Today I decided I was tired of looking at squares, and took a pass at drawing actual art for the game. Honestly, I wasn’t liking how the new gems were looking on my sprite sheet, but once I saw them in game, I was really happy with them. I’ll probably do another pass on them later.
I also made some foreground and background art, with curtains surrounding a window looking out at the night sky.
Adding a “destroy” animation had been in my issue tracker for a couple days, so I also took a stab at that. Gems now shrink down to nothing instead of vanishing instantly, and also spawn some particles. This caused me a few issues with gems that were marked as destroyed still technically hanging around until their particle effects finished. I had to add a bunch of extra guard clauses to functions to ignore those gems.
To celebrate this milestone in development, I bumped the minor version up. We’re at 0.1.0!
youtube
0 notes
Text
Game Jam Day 3: Tweaks
Nothing really revolutionary today. I changed the motion tweens for gems sliding into place, so that all gems arrive at the same time rather than further gems arriving later. I also added some elasticity to the movement, which makes it nice and juicy. Still need to get to having a “destroy” animation for the gems that are eliminated.
I also implemented the bug fixes I mentioned yesterday. You can’t click while an animation is playing, and you can resize the window and have the game scale with it.
I added a score counter that shows how many gems have been captured over the course of the game. I’m considering turning this into a magic system, with gems fueling spells that change the board state. Maybe each color fuels a different spell.
Finally, I did make a change to the actual gameplay itself. I made the two outermost rings of gems unclickable. They effectively serve as a preview of upcoming pieces Although they can still be captured, so they don’t behave completely the same as gems that haven’t spawned yet. I’m not completely sure I want to keep this mechanic. Mostly I was trying to find a way to prevent playing in a single corner of the board from being the most effective playstyle for building large clusters of one color.
I have a few ideas for that. Maybe a gem should randomly switch colors every few turns, to keep the board state dynamic. Maybe there should be bombs that you need to avoid with your captures. Maybe there could be a way to push gems like in Fractal: Make Blooms Not War. Much to think about.
youtube
0 notes
Text
Game Jam Day 2: The Main Mechanic
Today I got the main game mechanic for the project working. It works just like I described yesterday:
“When you click a gem, all gems of the same color in the same row or column are pulled towards it until packed tightly together, destroying any gems of other colors in the way.”
This was all surprisingly straightforward. The code I developed yesterday for seeking outward from the clicked gem to find all matching gems in the same direction has been the only real challenge in the project. Everything else has been smooth sailing. I did have to refactor my gem-highlight code, because it couldn’t handle darkening the gems that would be destroyed with your next click.
After tagging and pushing my 0.0.2 build, I realized that the game doesn’t stay centered and scaled if you resize the window, which I’ll fix in tomorrow’s build.
I also need to prevent the player from clicking again while an animation is in progress, because there are some nasty results if a gem is being moved by multiple tweens at once.
The gems still need a proper “destroy” animation too, rather than popping out of existence immediately. It’s disorienting.
youtube
0 notes
Text
Game Jam Day 1: The Basics
The game I have in mind is played on a grid filled with randomly colored gems. The mechanic I’m toying with in my head right now is:
“When you click a gem, all gems of the same color in the same row or column are pulled towards it until packed tightly together, destroying any gems of other colors in the way.”
Will this change during development? Probably. All my previous jam projects have tended to shift heavily.
The first step was generating a board full of tiles of different colors. Easy peasy. I’m using a sprite sheet with a separate image for each color gem, rather than simply modulating a single gem, because eventually I’ll want them to be different shapes as well. The GameBoard creates a grid of 100 gems, and each gem randomizes its own type upon spawning.
With that done, I moved on to actually interacting with the gems using the mouse. Having them become highlighted on mouse-over was easy thanks to Godot’s built-in signals. Having all matching-type gems in the same row or column also get highlighted was a bit harder. I implemented the Event Bus pattern for this. Whenever a gem is moused over, it tells the Event Bus to emit a “gem_mouse_entered” signal. Every gem listens to that signal and highlights itself if needed. The same logic applies for “gem_mouse_exited”.
I decided that I needed the GameBoard to manage the actual effects of the on-click event, rather than each gem deciding for itself whether it needed to be destroyed.
Figuring out how to reference all the gems in the same row or column as the taget, without having to do a slow lookup across all of the GameBoard’s children for each one, was a bit tricky. I haven’t implemented the “only delete gems not matching the target gem’s color and sandwiched between the target gem and another gem matching the target color” logic yet, it just deletes all the gems it finds seeking outward from the target.
youtube
0 notes
Text
I've joined a game jam!
For the next 90 days, I'm going to be participating in 90 Days & Ship It! Jam 2021. It's a game jam hosted by Game Endeavor, which challenges devs to make a complete game by August 7.
I'm very excited for this, because I find that I just can't muster the energy to work on game development lately unless I have a deadline. And since most game jams are 30 days or less, most of my projects don't make it past the prototype/demo stage.
I'm thinking I'll be able to make a fairly solid game in this 90 day period. I already have a very basic idea of the kind of thing I want to make: a grid-based gem puzzle, similar in style to games like "Bejeweled" (but not the same game mechanics).
Beyond the basic game mechanics, I'm not sure what kinds of game modes I'll want. A story mode would probably be too much. But maybe a puzzle mode and an high-score-challenge endless mode could work.
I don't intend to start actual work until the jam begins in about 17 hours. For now, though, I've set up some infrastructure for my development process:
An empty Godot project
A Fossil repository
An itch.io page
Scripts for building the Godot project and publishing to itch
I'm using Fossil instead of Git for version control because it has a built-in wiki and issue tracker. Lately I've been having some anxiety about storing issues externally to the repo, because it ties me to a web server. Fossil's issue tracking UI is definitely not my favorite (I'd prefer something that feels more like a developer-oriented "todo" list and less like an end-user-oriented bug-reporting tool), but not having to worry about losing access to my issues is a huge relief.
1 note
·
View note
Text
Upgrading Gogs to 0.12 to support LFS
For the sake of anyone who is struggling with all this, here’s everything I had to do to get LFS working on my Gogs server.
Server side config:
Kill the gogs process
Download 0.12.2 from the GitHub repo.
Follow the instructions here to upgrade to the new version: https://gogs.io/docs/upgrade/upgrade_from_binary
(TLDR: back up the old version, extract the new one, copy over the custom, data, and log folders)
Edit custom/conf/app.ini to rename ROOT_URL to EXTERNAL_URL
Add a storage volume to my droplet on Digital Ocean, and symlink it to data/lfs-objects in my gogs install (optional, I just wanted to avoid filling up my droplet’s SSD)
Bring gogs back up
Local config:
Install a newer version of git-lfs on Windows (i went from 2.4 to 2.12 i think)
Copy the binary for the new LFS into the git/mingw64/bin folder
Run git config lfs.contenttype=0 because LFS wants to send file-appropriate content headers but Gogs only wants octet streams
Update my repo's remote URL to use https instead of ssh, because the ssh connection doesn't honor the EXTERNAL_URL properly for some reason.
0 notes
Photo
I participated in a submarine-themed one-week game jam a few weeks ago. I made a game using Godot called "The Deep". In the game, you control a submarine exploring an underwater labyrinth. The deeper you go, the darker it gets. As you progress, you'll find tools that help you progress. There's not a whole lot to the game; it's more of a proof of concept to see how much I could get done in a week (and honestly I slacked off a lot). You can download it from itch.io here:
1 note
·
View note
Text
On Godot
I've been playing around with Godot a lot recently in order to procrastinate on take a break from my homework. It's been a lot of fun so far.
Like Unity, Godot uses a tree structure to represent everything in a scene. There are some implementation differences, though. In Unity, your tree is composed of "GameObjects". Each GameObject is itself composed of a list of "Components". Example components include "sprite renderer", "script", and "rect transform".
In Godot, meanwhile, there's no real distinction between "objects" and "components". *Everything* is part of the tree. Your player character might be a KinematicBody node with its own subtree consisting of a CollisionShape, a Sprite, an AnimationPlayer, and so on. The only things that aren't nodes are scripts. Every node can have a single script attached to it, which extends the built-in script for the node type.
Godot's also a little more free about its definition of "scene". In Unity, a scene is basically a screen of the game. You might have a TitleScene, a GameScene, a SettingsScene, and so on. In Godot, "scene" just means "subtree". You can think of them like Unity's "Prefabs". Every object in the game can be its own scene.
Godot's scripting language, "GGScript", is pretty nice. It's heavily inspired by Python, and it makes development a breeze. I do wish I could have more than one script per node though.
More thoughts later.
6 notes
·
View notes
Text
Everyone says that LaTeX is better than something like LibreOffice or Word, because you can just type without worrying about formatting. But I don’t find that to be true. I wind up spending so much more time fiddling with markup and then re-rendering to see if things look okay.
0 notes
Photo
I may have to steal this.

The Initiative Tree
I just showed up to my buddy’s house for our weekly D&D Night, and he pulled out this awesome creation that he built.
After we roll for Initiative, we each put on our clothespin to remember the order of our turns. I was so immediately impressed that I asked him if I could snap a pic and share with the rest of you. He graciously agreed.
20K notes
·
View notes
Text
One of my speakers cut out, and I didn’t even realize it until i tried to listen to They Might Be Giants’ “Spoiler Warning” and I only got Linnell’s lyrics.
Thanks for helping me diagnose the issue, TMBG!
1 note
·
View note