"Two Feel" multiplayer rhythm game using chuck + visuals

Wesley Larlarb

 

DOWNLOAD HERE (macOS only, tested with Sonoma 14.4.1)

steps to run (necessary to get past apple security pop-ups):

-download

-unzip

-run rhythmgame.app by double clicking or right click -> open

-close dialogue about "can't be opened because apple cannot check..."

-right click rhythmgame.app and click open, then click open again

 

Two Feel is a two-player rhythm game about copying your opponent's rhythmic sequence, and creating your own sequences that are diffcult to copy.

 

Weekly Progress reports 

Week 1 progress:

I reviewed the code for some of my past projects relating to real-time looping in chuck and rhythm games in chuck. I researched some options and decided to try chunity + photon fusion to create some kind of multiplayer rhythm game.

some examples of my past work with chuck audiovisual stuff, and games:

rhythmic shopping game

live looper in chugl

multiplayer tower defense game

 

Week 2 progress:

Got a basic Chunity project working with a timing loop, metronome, and note input that loops. The main challenge was getting things to work in a built version (outside the Unity Editor):

Tried valiantly and failed to make chunity work on IOS. It seems like running photon fusion networking package is too much of a cpu/threading load and causes chuck to have really unpredictable time updates on a phone. Or, maybe there's something buggy about my chunity setup, as it wasn't working great without any networking stuff either. Also, the iteration for deployment is very long on IOS. As such, I'll be switching to targeting Windows/Mac.

 

Week 3 progress:

- Added notion of an "offense" and "defense" player to my code. When the local computer is the offense player, they have control over inputting notes to the looped sequence. When they are the defense player, matching the timing of the sequence earns the local player points. I added a single player testing mode where spacebar switches between offense and defense players, and confirmed that this is working ok.

- Attempted to build game to multiple macs for multiplayer testing. This took some finagling as I ran into code-signing issues when building the unity player directly to the mac version of an exe file. It seems like it may have something to do with the fact that the chunity plugin is already code-signed? This is my guess because the direct build route worked when I removed chunity from the project. Thankfully, I was eventually able to work around this by building the unity project to an xcode project and letting xcode deal with the code signing, producing a runnable file that I can send to other people's macs.

- Added preliminary visuals to the game, expirimenting with a basic guitar-hero style with bars and note boxes flying between them:

Week 4 Progress

This week I learned how to use unity's particle system, experimenting with creating fire. I wanted to develop my toolkit for creating interesting visual effects, mostly because I found through playing a bunch of rhythm games that these effects add a lot of depth to the experience. Glowing circles, bars, trails, and so on are often used to convey information about the timing of upcoming notes, the timing of the player's inputs, the tempo of the song, the accuracy of the player's performance, the player's current score, and more. I spent much of last quarter working on rendering/modeling level graphics code, culminating in a final project where I learned how to create (simple hlsl) shaders in unity. However, I'd never tried Unity's particle system since it is more of a practical tool used to automate the work of creating particular vfx like fire, smoke, ribbons, trails, and so on out of systems of quads... not a theoretical stretch beyond what I learned in graphics class, but a fairly complex and specific application of it.

Fire texture I painted:

 

Breakdown of the rendering layers I added to acheive the fire effect:

 

 

Week 5 Progress

This week I worked toward synthesizing bass drum and snare drum sounds for use in the game. Josh recommended me the soundonsound.com synth secret series, particularly the bass drum  and snare drum sections. My results sound interesting allthough not really like a real drum. I'd like to make the sounds feel a little more resonant and also more explosive, so I'm still expirimenting with the attack, decay, and tuning of them to find what works.

snare drum code

bass drum code

Week 6 Progress

This week I incorporated the new sounds into the game, and also added the fire effect into the game along with a smoke effect which triggers when the player successfully times their input.

Visual demo of the effect In game (sorry for no audio, haven't figured out how to record audio from chunity):

 

After feeling this out, I decided I'd like to aim for a simple, abstract visual feel for the final product. I think the sound synthesis element from chuck is where my strengths lie as a developer, and it's what could set this game apart from others. Having dynamic, semi-randomized backing tracks which are responsive to gameplay is the ultimate goal, but first we need to get the game minimally working and feeling good with a set backing track.

Week 7 + 8 Progress

This week I took on the most technically intensive task so far, which was creating a fully online multiplayer round-based structure. This required syncing the input data of the offense player across the network before the defense player needs to hear it, which meant that I had to account for delay as the data was sent over the network. I decided to solve this problem musically, adding a 2 beat rest only on the defense player's computer, which means that the network latency can be up to 2 beats without missing the note input. Similar rests had to be inserted for the defense player's guessing inputs. The end result is visually and sonically the same, but can now be played on two computers over a network!

At this point, there are just a few minor changes left to add before the game is works to fine-tune and present:

Once we get these done, it's time to playtest and fine-tune the parameters of the note input window, bpm, loudness, visuals, etc.

Week 9 Progress

Added new visuals and updated webpage with previous several weeks of progress. Currently reaching out to folks to playtest, and finishing the last few details as mentioned previously.

new visuals: