The old, dark Christmas. Rich and folkloric. Mood album for holiday season 2020. $10 on iTunes, BandCamp or Amazon.
Tags: christmas, gothic, music, sfwArticles by Matt
Civ VI: Gathering Storm
Ugh. I wasn’t going to buy this smart mega-expansion. But then I did. At this point productivity is purely a memory.
Tags: civ vi, sfwOctober Haunts Me

An html5 auto-conversation game about the different versions of ourselves that have been, are, and will be, meeting an ex from many years prior. Graphics designed/performed with iOS Messages animojis. Created for the October 2020- game jam at KADK. (Plus fixes, cleanup, and the addition of a third character.)
Play “October Haunts Me” (in your browser)
Tags: animoji, game, html5, javascript, sfwForest: Beta 7
Introducing beta 7 of Forest, with better graphics, a more dynamic game world, and many behind the scenes tweaks. This project is released under an MIT License.

Updates
Forest Gods. Nearly all aspects of the board can now be influenced by randomly-generated, free-floating roamers. Some are dramatic (like lightning gods) others practically invisible (like soil porosity gods). They’re intended to make the forest more varied, and perhaps even less lonely and more mysterious.
Improved Fire. Fire has been an aspect of the game world for several versions, but is completely rewritten in beta 7 to be much more graphical, dramatic, realistic in its effect on the forest, and unpredictable.
Better Graphics. The band of the sun now moves throughout the year more accurately, and the stars now properly blur into rings as well. Fog is a custom shader, the minimum of height fog and linear distance fog. Lighting for the ground and water now comes from an array of lights aligned with the sun ring. (Trees are still sprites, however, and don’t yet respond to lighting.) The randomly generated forest’s average temperature is used as a stand-in for latitude.
Smaller Board. Moved from a 200×200 tile grid down to 128×128. This seems to tax the CPU a little less without noticeably changing the scale of the game.
Erosion. Soil is now washed along by water. Stream system formation is still rare, but it does happen.
Tags: babylon.js, game, javascript, sfw, webGLTrump Pence 2020 Posters
I miss productivity, I hate the unskippable logos, I’m not a big fan of Steam, and it runs my laptop red hot, but wow is this game something.
Another Skarresø Sketch
Forest: Beta 6
Introducing beta 6 of Forest. This release should bring a much higher framerate in all browsers, and a number of small fixes.

Architecture – A Quick Outline
I’ve tried to organize Forest into a series of big JavaScript Objects that group related activities, and Classes to cleanly manage everything I need more than one of. Please take a look at the game loop and WebWorker code if you’re interested in how any of it works. This project is released under an MIT License.
- Control Objects
- World: Manages weather, climate cycles & fps
- Ground: Manages ground conditions, GridTiles, RenderGroups
- Roamers: Everything that needs to be updated each frame, including the camera, the camera’s (invisible) target, lightning bolts, etc.
- Mats: Materials and texture maps, including the ground’s dynamic texture
- Sprites: Lifecycle and behavior management of trees, energy balls, etc.
- PostProcessing: Manages GPU special effects for the scene, like bloom
- Shaders: Overwrites some of Babylon.js‘s shaders with custom versions
- Actors: Container for the Actor classes
- Classes
- GridTile: Manages one point on the map grid, and holds the Actors currently active on it
- TileAlias: GridTiles in the first row and column use these to keep track of the geometry they must also update to smoothly wrap the map
- RenderGroup: A block of GridTiles, which can be prioritized for drawing depending on the camera’s current position
- Fire: An Actor which consumes other actors, then temporarily blackens the GridTile
- Tree: A large, slow-growing Actor
- FallenTree: An Actor which slowly loses mass, producing new soil
- Grass: A small, fast-growing Actor, which greens the GridTile
- DeadGrass: An Actor which slowly loses mass, producing new soil, while it browns the GridTile
- ProtoRoamer: Class containing data fields and actions for things that roam around on the board
- Camera: Subclass of ProtoRoamer, which moves the camera
- Target: Subclass of ProtoRoamer, at which the camera is aimed
- Energy: Subclass of ProtoRoamer, short-lived, produced where you click, which feeds energy to the Actors there
- LightningBolt: Subclass of ProtoRoamer, very short-lived, obliterates all Actors on its GridTile and starts Fires on surrounding tiles
Updates
Better performance in all browsers. Beta 6 moves the process of updating water flow and ground conditions into a WebWorker, a second processor thread. Beta 5 was a major rewrite to accomodate this, moving most of the data of each GridTile object into a single, large Float32Array, and adding Getters/Setters to the GridTile class to make the array data behave like normal properties. Parts of the array can then be rapidly copied, to update the vertex data or to be sent to the worker thread, via the .subarray() function. Data returned from the worker thread can then be copied back into the main array via a .set() operation. Currently, any changes made to the board by Actors or Roamers during thread execution will be overwritten
Better performance in Firefox and Chrome. The GridTile prototype uses Getters/Setters to manipulate the data in the master Float32Array. This was originally done in Beta 5 to allow moving some updating to a WebWorker, but for whatever reason the major speedup of moving the data into the Float32Array alone ended up being worth the change. The index lookups in the Getters/Setters (e.g. ground.data[ground.indices.watertable+this.index]
) bring virtually no overhead in Safari, but Chrome and Firefox struggled with them. Beta 6 caches the lookup indices in each object, which speeds up Firefox and Chrome considerably even absent the WebWorker thread.
Forest: Beta 5
“Forest” is a peaceful, meditative god game. It is free, runs in any modern browser, and is played with one button (or finger). Each time the page is loaded, a forest with a random climate is created. You may interact, observe, or any combination of the two. There is no objective.
The game is written in JavaScript, using WebGL via the Babylon.js framework. Beta 5 is a preview release for which I’m grateful for feedback– a major rewrite, much faster and more memory-efficient than previous betas, with most of the major systems in place for the game as I’d originally conceived it. If you’re interested, please take a look at the source code.
MIT License
Copyright (c) 2020 Matt Rasmussen
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Tags: babylon.js, beta, forest game, sfw, webGLForest Fire: A Game for Kids v2
Forest Fire is a simple Pandemic-like (or Pandemic-lite) game for 2-4 kids, age 5 and up. The players work together to put out the fires in a forest. Encourage them to talk over their moves, and strategize as a team.
Make a 6×6 grid. Number the rows and columns 1-6. These are the Forest Squares. Place a player piece for each kid around the outer edge of the grid, next to any square they choose.
Get 2 dice. These are the Fire Dice, which you will roll to add Fires (counters) to the board–one roll of the dice per player per round. Announce the rolls to the players as down then across (e.g. “1 down, 4 across.”) Have the players add a Fire counter to the square you call out. Squares can have more than one Fire counter at a time. Now explain that when there’s a non-burning (empty) square between a new Fire and an existing Fire, the Fire spreads to the square inbetween–horizontally, vertically, or diagonally. (This is like Go, only Fire can only “flip” a single empty square.) Roll once for each player, then begin.
If at the end of a round anyone is still on a square with a Fire, they’re out of the game. Disaster! If all forest squares are burning, it’s game over. When the kids put out all the Fires, they win!
Difficulty: A Firebreak is a clearing (natural or artificial) in the forest that fire can’t easily cross. With a second type of counter, you may at the beginning of the game roll to add Firebreaks to the board. Players can move onto Firebreak squares, but if a Fire is rolled on a Firebreak square, nothing happens. For an easier game, roll up to one Firebreak per player. Roll fewer or none for a challenge game. (Remember, the players still lose if every non-Firebreak square is ablaze at the same time!)
Introduce the types of player characters one game at a time:
Hotshot
Have the kids mime holding a firehose. Explain that a Hotshot Team is the firefighters on the ground with hoses and shovels who work to put out forest fires. (This is where the term comes from!)
A Hotshot gets 2 moves per round. Each move can be either: 1) Putting out the Fires (removing all Fire counters) from their own or an adjacent square (N, S, E, W or diagonally), or 2) Moving 1 square N, S, E or W. Moving one square off the board, like at the beginning, is allowed.
To begin the game, explain that it takes time to get Hotshot Teams to a forest fire. Because of this, the fire has time to spread. Add 2 rounds’ worth of fires to the board (one roll for each player x2) then have the players begin.
Smoke Jumpers
Have the kids mime holding onto the straps of a parachute. Explain that a Fire Jumper parachutes into the forest near a fire. Because of this, they can’t carry as much equipment, but once they hike out they can jump in again anywhere they’re needed.
A Smoke Jumper gets 2 moves per round. Similar to the Hotshot, each move can be either: 1) Putting out 1 fire (removing only 1 counter) from their own or an adjacent square (N, S, E, W or diagonally), or 2) Moving 1 square N, S, E or W. They also have a special ability: Upon moving off the board, they can “jump” to any square on the board. (Moving off the board and jumping count as a single action.)
Add 2 rounds’ worth of Fires to the board, then have the players begin.
Pilots
Have the kids make an airplane with they hand (palm flat, index and ring finger together underneath the middle finger, pinky and thumb straight out to the sides). (If this is too hard, just pretend to be holding the flying yoke.) Explain that Pilots fly seaplanes which land on a body of water, fill a large tank, and then dump the water directly onto a fire.
Movement-wise, the pilot works a little differently. Every other turn, they must leave the board to refill their water tanks. Thus, every second turn, the players pick up their piece and hold it in their hand. The next turn, however, they can put out all the fire on any 3 squares in a row (N, S, E, W or diagonally).
Add 2 rounds’ worth of fires to the board. When the kids begin, remind them that they must first leave the board to fill up–so there will actually be 3 rounds of Fires added before they can begin putting them out!
Mixed Game
Now we put the pieces together. Let the kids decide (and encourage them to discuss strategically) what each would like to be: a Hotshot, a Smoke Jumper, or a Pilot. Explain how fighting forest fires is a team effort, with people in different specialties doing different jobs. (Now we understand the pantomiming; it’s to keep everyone’s role straight!)
Add 2 rounds’ worth of fires to the board, and have the kids begin!
Tags: board game, kids, sfw“The Leaves” Festival Poster

If you’re in the Boston area Sunday, February 8, be sure to catch the world premier at the Boston Sci-Fi Film Festival.
Tags: film, premier, rhinocrate, sfw, the leavesBuilds For “The Leaves”
I love making stuff. The films I get involved with always seem to result in fun builds. It’s possible I’m getting my priorities backwards.
Old Book


Board Game



Rain & Sun Shirts




“The Leaves” Cast & Crew

The Dream Detective: Complete PDF
A printable PDF of all nine stories in Sax Rohmer’s 1920 occult detective series, The Dream Detective:
Tags: Public Domain, Sax Rohmer, sfwStills From “The Leaves”







iPhone port of the classic SegaCD RPG. Still a wonderfully fun game.