TriJam 383 - You were the chosen one
TriJam
It's a new week, and it seems like I'll have a spare 3 hours scattered throught the days. Time to join another TriJam, 3-hour game jam!
Trijam is a weekly game jam where your goal is to make something playable (and fun!) in just 3 hours, and our history shows that it’s more than just possible!
This time the theme was You were the chosen one! and this was my entry, Abudction!
Last time I did this jam was #368, apparently 15 weeks earlier. Like this one, I tried to build a 3d game within the limit. I think I've learnt a lot from that experience, and I need to have a playable game with relatively low scope, that I can expand on if time allows. This time I wanted to include audio too.

The Idea
To work with the theme You were the chosen one!, I decided to make a game where the player was chosen by aliens to be abducted, but still has a chance to escape (that last bit never made it to the game).

The premise was simple. Avoid abduction for as long as you can, using other items to slow it down.
Tools
- Language: Typescript
- 3D framework: Three.js
- Music: Strudel
- Sounds: PFXR
- Modelling: Blender 3D
- Colors: Lospec - Campfire Story by clayrocks
Timing Breakdown
With only 3 hours, it's critical to watch where you spend your time. I didn't count playtesting (apart from quick tests as I went) and I didn't count planning.

The majority of time went into gameplay, and the way items behave. UI elements seem a bit too high, but it was all done with HTML and I didn't feel like adding the overhead of React or Angular, so I created something simple.
Art (Music/sound/3d/lighting) was another third of the time spent. One day I'll just pick up an asset pack and run with it, but its a really enjoyable part of the process. I love being an all-rounder, and I love making things from scratch
The Gameplay
The ultimate goal is to survive as long as you can without being abducted. There's a gentle increase in difficulty as you play, so you are forced to change your approach. It's all built based on 3 mechanics
At the start, the UFO has a slow turning circle. It starts at 0.04 (on an arbitrary scale) but increases towards 0.14 with a half-life of 45 seconds
Similarly, the UFO starts with a speed of 95% of the player's speed, but approaches 113% with a half-life of 10 seconds.
The last mechanic is that if the UFO picks up a random item, its speed will slow down by 20% for half a second. The game tries to spawn in items gradually until there's 40 items.
So, at the beginning you can outrun the UFO, and snake around behind it, but as you play on you'll become more reliant on forcing it to pick up items as it becomes more agile and faster than you.
I estimated the gameplay time around 5 to 10 minutes, with a good score around 60 seconds.
Artwork
After picking a colour pallete from Lospec, I built all of my models in Blender

This served as a list of assets that I would clone into my scene. Since the whole scene was dynamic (unlike my previous entry) I didn't need to lay out anything here. The textures are simple, something I know works with Three.js out of the box: the UVs for the faces are scaled down to dots, and placed over the colour pallete texture

Music was made with strudel and then exported to WAV, and converted to OGG with a random online converter. Strudel is a cool way to build up music or loops through code
setcpm(180 / 4)
stack(note("<[d4 g4] [d4 g4] [f4 b4] a4 [d4 g4] [f4 b4] [a4 b4] a4>")
.s("sine")
.legato(2)
.vib(3, 0.2)
.lpf(1000)
.gain(sine.range(0.4, 0.9).slow(4))
.room(0.8)
.delay(0.4).delaytime(0.25).delayfeedback(0.6),
s("bd ~ [~ sd] ~").room(0.2).gain(0.4),
s("~ hh ~ hh").room(0.2).gain(0.3),
n("- 1 1 1").s(choose("saw", "square")).room(0.1).fm(saw.range(0, 3).slow(4)).lpf(sine.range(1000, 20000).slow(8)).lpq(20).room(0.6),
note("- - - A5").piano().gain(0.3).delay(0.4).delaytime(0.25).delayfeedback(0.6)
).crush(sine.range(4, 16).slow(4))
I must admit, I used AI (well, Gemini built into the Google search) for an approch to make a theremin-style sound. The song is built up with the theremin "melody" first, then two tracks for drums and high hats, then some low saw/square bass, and then I added a single A5 piano note. There's lots of delay and echo, some filtering, and than a slowly varying bitcrusher
The Submissions
Overall there were 29 submissions (26 playable in the browser), and I played and rated 13 of them:
- Forging Destinies by TooPixel
- Still Number One by BENGAR
- A Chosen Hero by James Nye
- The Prophecy by Duelist1234
- Reincarnated as Qin Shi Huang by SupercraftD
- The Chosen one by LilithGuild
- The Blue Cone by BestorTheDev
- Chosen One by alnis
- h4ck1ng 1n pr0gr3$$ by DriftingDuck
- Corruption quest by Quickcell
- Tri-Jam 383: Chosen One by wywuas
- Anisa and Duna by Someone's Shadow
- Project Notus by XeronBelivin
My Ratings
You can see them all in detail here
| Criteria | Rank |
|---|---|
| Gameplay | 10/29 |
| How well does the game fit the themes? | 12/29 |
| Audio | 12/29 |
| How do you rate the game overall | 14/29 |
| Visuals | 17/19 |
Compared to my previous entry, I was able to implement both music and sound effects for this game, do my audio score was better than last place. I decided to build everything from scratch, so the 32 minutes I spent modelling everything wasn't enough. It would be nice to have a team at some point, and delegate some artwork to others.
I'm glad my highest score was gameplay. In 3 hours its hard to make something that works, let alone something that you would consider as a game. Even though the gameplay is "live as long as you can", I suppose it was easy to understand and pick up.
There were some pretty fun games I was up against. Some were incomplete, others went over time (which is allowed), some used assets, some had teams, and some managed to solo it better than I could in 3 hours.
This jam is so regular that it doesn't really matter, as long as you have fun. Like other james, it makes you finish something. With the 3 hour limit, it really forces you to get the gameplay working ASAP. I'm updating my game based on some of the feedback and the ideas I wasn't able to execute in the time available, and I can already see others are doing the same.
The Future of the game
I don't think there's much to expand on here. It was a good learning experience with three.js again, and it just needs a little polish. The list I currently have is:
- Show your live score as you play (not just at the end)
- Add full-screen mode
- Add a cow-counter
- Make all the items collide-able, so you bump them out of the way
- Make the items move towards the top of the UFO tractor bean cone, rather than going straight up
- Make the UFO sway as it moves
- Improve the visuals of the tractor beam
- Add other items
- Make the game scroll left to right, rather than respawning items in plain sight
- Extend the length of the song loop
- Animate the player walking
- Add an intro and outro cutscene
Of course, step one is a bunch of refactoring. In the short time limit you do what you must to get it working, even if it gets a bit messy.
You can follow along on GitHub here or the game page on itch.io. Feel free to leave comments there!
Progress shots
I'll leave you with some progress screenshots
The first thing I did was model the gameplay in 2D. Trying to sort out gameplay and movement when you don't even know if your 3D camera is pointing the right way is a quick way to get frustrated.

One I was happy, I added the 3D view, leaving the 2D view as a debugging feature until I felt things were solid
