After watching videos on how to code jumping, I realised there’s a lot more depth to jumping than I thought: for example, it can mean a world of difference if you allow the player to control movement while in air, or not. So, I decided to focus on jumping exclusively.

It’s playable-ish up to the 3rd or so bug, but I haven’t built the maps for the rest. I also haven’t actually tied the bug effects to the picking up of bugs; in this video, it’s literally just pressing the relevant key when you get the bug.

I’ve coded in all the required variables, except for dropping through platforms (i haven’t figured that part out yet, so watch out, prof, i’m coming to your inbox). Here’s another video to show the effects:

Issues which I have not figured out how to solve:

  • Aforementioned dropping through platforms
    • I can’t seem to find a suitable code which works with what I have, and me trying to hack at it doesn’t really work
  • Jumping lines when dialogue is ongoing (e.g. even though there’s 5 lines, only the first line shows)
    • Apparently tied to number of other dialogue box-using objects; when I reduce to only 1 Person, the dialogue plays fine
  • If I disable movement while the dialogue box is open, if the player is moving when dialogue is triggered, they will slide on forever until the dialogue box closes
    • I have.. No solution. It’s definitely related to the playerMovement() function, but I don’t even know why it would happen.


I know I had a timeline, but I realise I greatly underestimated how important sprites are: the sizing will definitely be off once I implement them. Of the aforementioned issues, too, the only really significant one for now is the 1st one. So, I’ve decided to change it slightly:

I can see quite a few issues cropping up, like a) the sizing going haywire, b) the block tiling for platforms failing, c) failing to reference the correct bug, despawn it properly, or change the correct value, or d) the fact that my current Player has a really fun spin, to the extent that there’s no “right side up”: if I add a proper sprite, I might have to include code which stops it from doing so. (Unless I actively decide to make it have no right-side-up.)

What’s that about “game endings”? Well,


My stretch goal is to amplify the emotional aspect, in terms of the parallels between “a buggy game” and “sadness over being incompetent”. As such, I’m thinking of having 3 endings, which have different activation conditions, and which correlates to “your relationship with bugs”.

I don’t know if I should spoil it, but I’m likely to forgo it since no time, so I’ll only talk about it if it comes to it, and just stick to the ~happy village life where you help the villagers catch bugs~ story.

The villagers may or may not have a role to play in this, which is why I’ve added them. That’s quite tedious, though, so I might leave them as hint-givers, as per right now. (They also don’t have changing dialogue based on changing progression rates, because I did that before, and boy, it was not fun.)

(It’s also kind of boring to only reach places just to get bugs, so I put people as hint-givers to mediate that.)


  • Code Monkey series on Jumping (link)
  • How to make a Dialogue System in Unity (link)
  • Super Mario Maker 2: No Jumping Allowed (link)
  • IDK it was a cute square so I was reminded of this (link)
  • And like 3711748 Unity forum questions

[W9IfD] turning data into forms

← Previous Post | Next Post →

(You can generate the cover here.)

Last week, I came to class with multiple instances of code. The downside was that I genuinely had no idea how it would turn out, or any direction to guide me towards that end, so I figured that Lisa’s suggestion to incorporate data visualisation was a good idea.

Again, the theme of Fantasy is with respect to the fantasy of actualising impossibilities through technology, but I also used a more innocuous data set, in honour of something which is coming soon:

Yes, it’s a visualisation of the Final Fantasy franchise.


I have never touched data visualisation in my life, so I looked up tutorials by, once again, Coding Train. I decided against using real-time data, since it’s complicated, and there’re no API resources for the entire franchise (only FFXIV has a dedicated following). Instead, I created a JSON-based dataset; in total, there’s about 850++ lines of code.

I ran some tests to ensure that the data could be accessed properly, as well, and properly incorporated into other codes:

After which, I began testing different ways to combine data with visuals, and put them all together in a not-painful-to-look-at way:

The details regarding which data set corresponds to what visuals are available on the page. Nevertheless, there’re some fun facts which are fun only if you understand Math and Final Fantasy, such as that a) patterns are easily observable once you know what drives it, and b) that outliers make for… Interesting visuals.

Also, interestingly, a previously mentioned possible guiding philosophy was how basic elements come together to create complex forms. Due to that ellipses were used for practically everything, it surprisingly came to fruition as well.

(mockup credits) (data credits, and a lot of wikipedia pages)

[W7IfD] making pencil comps for a digital generation is, uh,

← Previous Post | Next Post →

As per the last post, I decided to work with generative illustrations. Where the theme is something like “the Fantasy of actualising impossibilities through technology”. And, of course, I don’t have pencil compositions, or even drafts of what I want. Here are the two main reasons why:


As summarised by Spittel, there are two approaches to generative art: a) have no results, and let the computer generate as you play around, and b) have a very finalised idea, only allowing little randomisation.

I wanted to go for a mix of the two: keeping a vague idea of what I want the overall form to be like, while allowing the computer freedom to generate the exacts of what it turns out to be.

Automatic line makings, to get a gist for the overall form. As can be seen, it will likely involve many arcs, curves and loops, and a tall form which isn’t symmetrical.

But, intention probably won’t match up to action, because


I can draw decently well, but coding full-fledged physics is……. While I wanted to aim for something like Shvembldr and/or Nick Taylor‘s emergent, organic forms, I’m not sure that it’s possible at my current level. The most I can do is probably to work with basic elements, like lines and circles, and randomise their colours, positions, and sizes.

As such, it seems unlikely that I can find a way to code the piece to be particularly close to whatever I would envision. Still, I’ll outlaw patterned works like cccbtt, where I think it’s too structured: the point is to show off how amazing technology is, which is more evident when more complex functions like sin() is involved.


After looking into different scripting languages, I decided to go with P5.js.

Their tagline aptly summarises why: it has “the power of Processing times the reach of JavaScript”. In other words, it can achieve more than web-based Javascript alone, while being more accessible to creators and audiences, since it’s for web.


As I’ve said, I don’t have pencil sketches, because it depends on how fast I learn. Instead, I just experimented wildly with codes that I learned, using random() and noise() on parameters like the x-y coordinates, or scale().

Here are some things I learned (or refreshed, it’s been a while since I’ve touched Java/Script) during the spring break:

From there, I picked out elements I liked, and tried combining them, or messing around even more. Half of this were not intentional, just that I didn’t really do object-oriented programming, so, uh.

I guess my first “pencil composition” would thus be something like this:


My second pencil composition tried to be more aware of the working style for generative pieces. Interestingly, there’s a sense in which coding is a “collage”, because you rarely write code from scratch: it’s usually about modifying other people’s codes to suit your needs.

As such, you’ll see that most of the practices here are based off codes that I grabbed elsewhere, like by The Coding Train:


[W7.5GD] Suffering

i submitted at 0943, checked again around 1330, and was disappointed, as always, that i uploaded the wrong file, there’re bugs. life is suffer


  • Implemented base version of Tetris
    • Includes generating blocks, falling mechanic, movement, rotation, play area, line clear, collison
  • Implemented variations
    • Assigned to Key Pressing
      • Changed constants to variables
      • Included variations for falling speed, reverse controls, auto-rotation, camera zooming, changing block types


  • Cleared up unnecessary code
    • Compiled into a single script, than attached to multiple objects
  • Removed GetOutOfJailFree & HOLD indicators
  • Implemented HISTORY indicator of past variations

200221 Shah (player) & Mus (key presser)

    • Shah is visibly done with Mus, who is abusing his abilities
    • It’s quite funny nevertheless
    • Falling Speed of Blocks is outrageous at 0.1f
    • Impossible to play at all after a certain point
    • An additional suggestion to go the route of a key presser who has to fulfil certain tasks before he can ruin the player’s life, e.g. minigames, or a timeout

200221 Kee Yong (player) & Shah (key presser)

    • Pretty much exactly the same sentiments

200221 Wei Ting (player) & Me (key presser)

    • Wei Ting is doing acceptably alright, since I try to act like an impartial algorithm
    • Not enough variations to be intriguing

In other words, rerouting the variations to activate through an impartial algorithm at specific invervals, than a partial algorithm at random intervals


  • Modified variations to a random algorithm, from key pressing
  • Implemented UI
    • A NEXT indicator area, to show the upcoming piece
    • SCORE tally of various items, such as total time elapsed
    • HISTORY indicator of last 5 variations
  • Fixed bug where I Piece didn’t rotate around the correct point
  • Fixed bug where O Piece rotates
  • Fixed bug where Zoomed Camera doesn’t follow the falling piece
  • Cleared up unnecessary code
    • Removed variations for changing height and width of play area


  • Modified algorithm to be weighted, than 100% random algorithm
    • Instead of picking a random variation, the algorithm now picks a type of variation, then rolls for an outcome. 75% odds of getting a favourable outcome for that variation
  • Implemented new variation types
    • ~2% chance for in-game music to change to 1 of 4 songs
    • ~4% chance for in-game background to change to 1 of 5 backgrounds
  • Implemented SCORE system
    • Implemented counters for things like Total Number of Blocks, Total Time Elapsed, and so on
    • Implemented score algorithm, giving different weights to different segments contributing to score
  • Implemented Tutorial at start of game
  • Implemented Restart option (R) & Tutorial Skipping option (S)
  • Implemented Speed Up (Q and/or W)
  • Fixed bug where counter and visible grid didn’t align

200301 Prof (player)

    • Confused by names of variations,
    • Can’t tell what variation is occurring,
    • Doesn’t know that effects stack (than being dispelled),
    • Despises the auto-rotation (especially in conjunction with high falling speed)
    • Confused by information overload of UI
    • Total score of about 8.6k

200301 Wei Ting (player)

    • Too focused on playing the game itself,
    • Doesn’t notice that variations are occurring and affecting gameplay,
    • Just thinks she’s not good at Tetris
    • Total score of about 1.3k

In other words, fix the UI and information hierarchies.


  • Modified algorithm conditions and weights
    • If the same variation is called up, instead of having no effect, it may reroll to give another another variation
    • Impossible to get absolutely no effect for a round. Increased chance of failing a roll to 40%, from 25%
  • Modified Rotation Lock, from auto-rotating clockwise once per second, to rotating clockwise once per left/right keys pressed
  • Modified SPD function
    • Pressing Q and/or W will cause falling speed of blocks to increase, not just the countdown to variations
  • Modified UI by, like, a lot
    • Modified HISTORY segment to ACTIVE segment, which states presently-active variations than past variations
    • Modified SCORE indicator area, to only show at the end of a game
    • Modified text for about everything to be less Debug.Log-based
    • Implemented bar (and removed text) in indicating countdown
    • Implemented icons and animations for Key Press functions (Q, W, S, R)
    • Implemented tutorial image for Movement keys
  • Modified activation conditions for certain keys
    • Restarting (R) and Skipping Tutorial (S) now requires holding for 1 second, than pressing the related key once
  • Modified SCORE counters
    • Reduced max Score to 99 999, than 9 999 999
    • Reduced Speed Up bonus
    • Increased Line Clear bonus
  • Implemented Game Over condition
  • Fixed bug where I Pieces and O Pieces weren’t centralised in the NEXT indicator area


  • Music
    • ff5_bigbridge (link)
    • Tetris – A Theme (link)
    • Tetris Attack – Poochy’s Theme (corrected errors – final submission) (link)
    • Video_Game_Themes_-_Zelda__Ocarina_Of_Time (link)
  • All background images from Pixabay

[W7PDaP] on the assigned reading

*inserts a very typical project management picture from here*

Here’s a short summary to get us all on the same page.

Chapter 2 introduces us to aspects of project management. It first establishes a difference between goals and objectives, where goals are shared across all projects while objectives are unique to each project. The chapter also claims that all projects have 6 goals to manage, with 5 phases and 6 activities during the process.

Chapter 5 further delves into project planning. This covers the necessities of planning, the iterative process of planning, fishbone-sque breaking down of tasks, and so on. It also goes into 6 objectives of the project work plan, and details regarding each objective, as well as how to document said plan.


The 6th goal is incredibly interesting to me, of “meeting everyone’s expectations”. It’s surprising to see that the human relationships between you, the clients and the employees is as important as it is. That’s also one of my weakest points, in balancing my happiness, with the happiness of others. Unfortunately, the book can’t give much information, since this is a very situational goal, but it’s still good to take note.

The only solution is probably practice. I’m very sorry in advance to every person who will have to put up with me.

The project manager’s obligation to fulfill other responsibilities is also concerning, especially in small projects, and especially where they’re expected to be generalists. After all, the way companies usually work is that you start as a specialist in a discipline anyway, such as “Junior Graphic Designer”. No one gets directly promoted to a more generalist role like Visual Design Executive. In other words, you need both depth and breadth.

The only solution, probably, is to “be good”.

how to get job, wow! i can’t believe!! it was so simple all along!!


Something which really gets to me is the artificial division of goals into 6 categories. This is because I feel that many of the goals can be subsumed under a similar header, such as “To reach the end within the established limitations”. This would easily cover budget, time, and safety, where these are limitations which must be adhered to. It’s not a major issue, since it IS important to eventually expand on these different aspects, but it’s just conceptually annoying for me.

Something which also gets to me is their definition of efficiency. That, again, is probably a linguistic difference: when I was taught (the equivalent of basics of) project management in my extracurricular activities, efficiency was lauded over effectiveness, where effectiveness was about being successful, but efficiency was about being successful with minimal resources. I guess it’s not a major issue either.

[W6IfD] Thumbnails, and a Mood™

← Previous Post | Next Post →

I took a slightly different approach, starting with concepts than visuals, since my forte is in critical analysis. Here are examples of the numerous false starts I had when I tried to subvert my typical way of project development:

After which, I tried to take into consideration what is required of a cover illustration for Varoom.

  • It must be something accessible, where Varoom isn’t meant to be a culture- and/or country-exclusive magazine,
  • It should provide critical new insights into the discipline of illustration, where that’s what the magazine is about,
  • It shouldn’t be focused on a specific topic or subject, where it’s a cover image, not an article-based image

Since I chose the topic of Fantasy, I thought about what Fantasy would mean to all illustrators. Where fantasy refers to the “imagining of impossibilities”, the conclusions I came up with were these:

  • Fantasy in how basic elements come together to create complex forms
    • In other words, how dots, lines, and planes come together to create illustrations which look like more than the sum of its parts
  • Fantasy in how impossible forms can be created through new technologies and means
    • In other words, how computer-based generation can create illustrations which would be tedious and/or impossible by hand

While I sketched thumbnails for both, I fully intend to go for the latter. This is because the former may be an insight into illustration, but it’s nothing new: we’ve long established the benefits of those basic elements. Computer generation, on the other hand, is definitely something new to the industry, and thus provides a fresher insight.

Based on that, Lisa also suggested the works of Joshua Davis, a generative illustrator. So, here’s my finalised moodboard:

I note that it may be difficult to do pencil compositions for a generative illustration. After all, the point of generative illustration is that it’s randomised. For now, I’ll look more into generating illustrations: depending on what I leave to the computer to randomise, there may be things which remain constant, which can be presented in a pencil composition.

Alternatively, it may even be more worthwhile to create a prototype directly in code.


  • Tips to Improve Your Generative Artwork (link)
  • How to Create Generative Art  In Less Than 100 Lines of Code (link)
  • How to Make Your First Generative Art with P5.js (link)

[W5IfD] Varoom & Editorial Researches

| Next Post →


A magazine published by the Association of Illustrators (AOI), it was likely named after Roy Lichtenstein’s 1963 pop art painting. And, of course, its contents regard the field of illustration.

Typically, a magazine revolves around a selected theme, such as Empathy or Muse. It is then made of articles which consist of an illustrator’s discourse on that subject, accompanied by their illustrative works. Articles are thus often about illustrations and illustrators, of which has some convergence to the theme.

The first type of article regards the style of a single illustrator. Articles of this kind do not address a single work, as opposed to the thoughts of the illustrator. As such, it would focus more on the illustrator’s approach to illustration as a whole, than to each individual piece.

An example is Wei Shao and her insights on urban spaces in Issue 40 (Fantasy). While a seemingly realistic topic, it is her illustrations which bring out the fantastical nature of this subject, where the use of exaggeration, geometry and repetition bring out the surreality of our current urban organisations. In fact, her opinions on this topic are often reflected in all of her works.

As found at https://theaoi.com/varoom/varoom-bottom-blocks/article-excerpt-wei-shao-one-space-eaten-by-another-space/

A similar, but slightly different type of article is that which follows the process of a single work. Unlike the previously-stated type, this kind of article allows more insight into the making of a highly-detailed piece, than into the general workings of an illustrator.

Reportage: After the Earthquake, for example, discusses Reflections, a project by Harry Morgan. It was intended as a way to raise awareness of the Nepali earthquake situation, with its link to the theme of Issue 33, Collaborators, being encompassed in its cross-media and cross-persons medium. The article thus focuses on the this project and the processes behind it, than Harry Morgan’s personal style.

A drawing by Harry Morgan, in Nepal, about Nepal. As found at http://www.cathdonaldson.co.uk/blog/cross-media-collaboration-reflections-25416

It is my opinion that the target audience is anyone with an interest in images and the process behind it. Varoom themselves seem to have a similar opinion, but expand on it more, by claiming to be “for creators, commissioners and lovers of great image-making”. In other words, creators who seek inspiration for their own works, commissioners looking for existing creators and/or ideas on what to commission, and lovers who’d just like to know more.

What I find most inspiring is how thematically-relevant the articles stay. Often, themes are designed to be as broad and inclusive as possible, so as to attract a wide range of contributors. As a result, however, the links between the theme and contributions tend to be weak at best, and superficial at worst. This isn’t the case for Varoom, where the editor’s efforts are evident: even words aren’t really needed, to see the link between each illustration and the theme. I admire that very much.

The takeaway, too, is to make something which is self-explanatory, such that even the form alone is enough to identify the theme.


  • What do you find inspiring?
  • What medium/s do they use? (Traditional, Digital, Mixed)
  • How do they creatively interpret the text for the article?

I follow a lot of illustrators, but none of them do editorial illustrations, surprisingly! After some reflection, I felt like the reason why was because the illustrators I follow tend to have personal styles and subjects which they enjoy illustrating, which doesn’t always match with the requirement of “commercialisation”. For example, loputyn has certain symbols she constantly employs, such as nude girls, in pursuit of the theme of “unity”, which could hardly be used as an editorial illustration.

As found at https://qz.com/quartzy/1728767/why-editorial-illustrations-look-so-similar-these-days/

Also, I think the “flat illustration” style is nice in its own way, since it’s clean, professional, minimal, and about everything that a client would want. But it’s somewhat overused, to the extent that it looks somewhat boring. So, here’s a list which actively avoids that.


Socially Responsible Investing
For an article on, well, Socially Responsible Investing. As found at http://www.marcoschin.com/illustrations/2015/7/1/socially-responsible-investing

His style reminded me of litarnes, whom I’m already a fan of. What I adore is the use of linework as texture, which also helps to maintain a simple colour palette. For example, that the small fishes are exclusively the same hue of orangey-yellow, with the reddish-orange lineart providing sufficient support to negate the need for shading. (His apparent fondness for Asia-related styles and images is also something I can get behind.)

Something which may or may not be a weakness is how the illustration is composed such that it can stand alone. I appreciate the piece far more for its technical beauty, than for its relevance to the article. In fact, the link isn’t quite clear until I know what the article is about: only now do I comprehend that the illustration depicts how large-scale fishing can have negative effects on the environment. At the same time, it’s a nice way of depicting a message without being too direct about it, allowing for some creative and fantastical elements.

It seems that Chin tends to draft in pencil, before scanning it in and working in Photoshop and Illustrator concurrently. A cleaner version might be done in Illustrator with the Pen tool, then ported over to Photoshop to “soften” the image. For example, the shape of the boat might be done in Illustrator, with a tool, but the colouring in Photoshop, by hand.


For an article on Stan Lee by the Hollywood Reporter. As found at https://tsevis.com/editorial-illustration-2016-2017

What I enjoy most about Tsevis’ works is that the link to the text is always immediately evident. This, of course, is because his editorial illustrations always depict the subject directly: in the above example, he presents Stan Lee’s portrait, which is something that the audience can recognise easily. He thus easily bypasses the possibility of an illustration being too complex to understand, through simplicity.

Even so, his works can be distinguished from photography in that the colours and building blocks of his compositions always add another layer of meaning. He composes Stan Lee’s face out of clips from comic books, and uses vibrant colours as an representation of Stan’s bright personality; for someone like Obama, he uses statistical numbers, and the dichotomy of blue (Democrat) and red (Republican).

I’m also fairly sure that he does these digitally, where he was inspired by things like ASCII & pixel art. Still, it would probably be possible (but tedious) for it to be analog.

For an article on Stan Lee by the Hollywood Reporter. As found at https://tsevis.com/editorial-illustration-2016-2017

(Also, it’s wonderful to see how the illustration blends into the article itself, where the article similarly uses the triadic colour scheme.)


Allegedly, for an article in The Lawyer, titled “The Learning Verve”. As found at https://www.nickyackland-snow.com/editorial

Another collage-type style, where Snow disassembles and reassembles different parts of different images. This is also admirable to me, where drawn illustration can be somewhat easier: you can control every aspect, from the forms to the colours. For collages, you have to painstakingly find some existing thing which can be repurposed.

At the same time, it combines the merits of photography and illustration. In the above example, the use of technical drawings and photographs make the piece surreal yet professional. This is also supported by the muted colour palettes favoured by Snow. As a result, we see how most of his editorial clients tend to be from magazines for adults, about fairly serious and/or retro topics. There’s an obvious target audience going on here.

This is another case of something which can be done through analog means, but I again think he does it digitally. It would be difficult to get the cleanliness he does, otherwise.


Probably, something like this. In other words, someone who is curious about other people, and loves to read about their thoughts and experiences. Also supported if it’s someone who already has exposure to the field of illustration, whether in their workplace, or as a hobbyist themself.


  • Varoom. At Association of Illustrators. (link)
  • Varoom magazine is changing the perception of illustration in the creative industries. Jyni Ong. At It’s Nice That. (link)
  • Marcos Chin: The Illustrated Man (link)
  • Charis Tsevis (link)
  • Featured Image is from Yuko Shimizu for an article on nightmares, who I totally did not talk about, but I also admire her work, just more of her illustration than editorial illustration specifically

[W5GD] A Really Rough Prototype, and About Ten Different Thoughts Behind It

I wrote this as my thought process and guidelines while making the 1st prototype, which has a video as found here:

So I figured, I might as well post it.


Literally, just the base game. I’m following this tutorial, though I’m unsure if I need to make any adjustments to prepare for implementing the effects and audience. For example, if I should already change the algorithm to select 3, then 1 from those 3 effects.

Things to consider, on if it should be excluded or included:

  • Very basics, like T-Spin, if the falling speed increases when Down key is pressed
  • Inclusion of a getOutOfJailFree thing. Start with 3x usage. If J key is pressed, clear the bottom 4 rows. This should be an anti-frustration feature, especially for new players who might be easily caught by new effects. You can acquire more usages through extreme luck.
  • If there should be a Next queue, and a Hold ability.
  • No transitions after certain number of lines cleared: most likely, the combination of effects will cause too much suffering, and I’ll need to put more anti-frustration things.
Example of anti-frustration feature in Tetris Effect, where ZONE slows down the gameplay. As found at https://ag.hyperxgaming.com/article/6695/how-to-get-a-decahexatris-in-tetris-effect


While the Player plays Tetris normally, different effects will manifest at certain intervals. I haven’t decided the exact timing, but it might be something like this. I assume that the Algorithm has 0 delay, and that there is an audience. If there is no audience, we can just assume that the Algorithm takes the role of the audience, just with 100% randomised selection rate.

  • 10 seconds: Normal Play / Nothing / Nothing
  • 20 seconds: Normal Play / 3 Selected / Audience Voting
  • 10 seconds: Normal Play / 1 Implemented / Nothing
  • 20 seconds: Normal Play / 3 Selected / Audience Voting
  • And, so on, until the Player dies

The turnover rate might be too slow, so we’ll see how it goes.


I decided against having a max limit of co-existing effects, since 1) that’d be annoying to make, you’d have to decide how to dispel effects, e.g. after 10 turns, or based on the number of effects currently present. 2) It’d help to increase the difficulty as more and more effects appear, plus the intended algorithm (as shown below) is supposed to be quite lenient.

I’ll try to avoid 100% RNG, since it might make the game too easy or difficult if you happen to get certain effects by luck. So, I’ll use a weighted percentage, based on an effect’s “type” and “last appearance”.

Types can be divided into Variables and Booleans, where some things are either on a scale, or present/absent. For example, fallingSpeedOfBlock is a variable, while reverseControls is a boolean. There’s a third category, which is just Specials, which includes things which shouldn’t be subsumed under either of the suggested two categories.

Last Appearance refers to the last time an effect was manifested. I considered a new category like Potency, but decided against it since the impact of an effect can’t really be judged easily (e.g. maybe Garbage might benefit/disadvantage based on circumstance).


The maximum chance of reappearing decreases with each increment. At the maximum/minimum value of the variable, the possibility of increase/decrease is capped at 0%. For example,

  • when fallingSpeed = 1.0, up to 100% chance of fallingSpeedUp & 100% fallingSpeedDown appearing (of original chance value),
  • when fallingSpeed = 1.2, up to 60% & 140%
  • when fallingSpeed = 1.4 up to 30% & 170%,
  • when fallingSpeed = 1.6 up to 0% & 200%,

Possible variables would thus include these:

  • fallingSpeedUp / fallingSpeedDown
  • stageWidthUp / stageWidthDown
  • stageHeightUp /stageHeightDown


The chance of appearance is constant, and will never fall to 0%. If same effect appears again, it simply switches the boolean value, such that the effect is undone if it’s already manifested.

Possible booleans would thus include these:

  • reverseControls
  • reverseStage
  • onlyLPieces, or onlyTPieces
  • AutoRotate (i.e. no manual rotate)


Things with a constant rate of appearance, and no on/off state. I have almost nothing right now though. Maybe under New Asset Based (see below).

  • onlyLPieces: similar to the boolean type above, but only for 10 rounds. May be slightly less painful than the boolean, so I might do this instead.
  • In fact, about any of the booleans can be shifted here, on the premise of “it lasts for 10 turns”. But I wouldn’t really want players to waste brain energy calculating when something runs out.


Usually, things with a constant rate of appearance, and things which may not affect gameplay too significantly. In other words, bonuses and Easter Eggs. The two here are New Asset Based, but I think I should add them anyway (or the first one, at least).

  • getOutOfJailFree: you can clear bottom 4 rows without penalty, by pressing the J key. Likely, a low chance of manifestation (like 2%), and should already be available at the start.
  • Skins: literally no effect, it just changes what the interface looks like. Probably also a low chance, more for player/audience entertainment, to make them feel pretty lucky! Maybe like 3 different themes, including the default theme.

Yeet me off the mortal coil

A special category for things I’ve considered. It’s either too painful for anything to bear, or it might be hard to implement since it involves additional things than just changing values in the system.

New Asset Based

An example of New Asset Based functions, where you have to code the garbage specially, than just change a variable value. As found at https://www.youtube.com/watch?v=3w91x6S-tI8
  • garbageAbove / garbageBelow: introduces garbage to the level, either below the existing stage or falling from above (Constant)
  • newBlocks: introduces new types of blocks, such as 9×9 (Boolean)
  • changeVisibility: darkness except around falling piece, or zoomed onto falling piece, such that you can’t see the rest of the level (Boolean)
  • sideGravityUp: blocks float instead of fall now, including the original set of blocks, which will fly up into a new position (Boolean)
  • sideGravityLeft: blocks are pulled towards left, which doesn’t involve the original set, but all new blocks, upon being placed, will be pulled to the left (if possible) (Boolean)

Death Is Preferable

  • AutoMovement: can’t translate left and right manually, which would be absolute suffering, especially at high speeds, since you need to wait for the system to move it to your preferred location, and by that time you might already be dead
  • onlyMoveRight: similar to above, but you can only move blocks rightwards. Also, an easy way for immediate death.
  • noRotationAtAll: again, easy death.


The easier part would include changing the algorithm, such that it selects 3 effects than 1, then presents them. After which, the audience can choose 1 out of 3. I haven’t decided if the rate of appearance should be affect if an effect appears, but isn’t chosen.

The harder part would include bringing the audience in.

  1. The Player selects “I’m a Player”. The system makes a room, and auto-assigns a Room Code. The Player plays as usual, with the algorithm doing the work.
  2. If there is no Audience, the algorithm just continues selecting as per normal. (In other words, the Room Code is only used if the Player wants to share it with potential Audience.)
  3. If there is Audience, but no Audience Votes, the algorithm just selects 1 out of 3 with 100% random rate.
  4. If there is Audience and Audience Votes, the algorithm selects the effect with most votes. If there’s a tie, the algorithm selects with 100% random rate.
Example of how Jackbox allows the audience to join. As found at https://www.reddit.com/r/gaming/comments/919rgd/our_room_code_for_fakin_it_from_jackbox_party/

That also means that, on the Audience side, adjustments must also be made:

  1. The Audience selects “I’m Just Watching”. The system requests the Room Code, which the Audience must input to enter the correct room.
  2. The Audience gets to see the Player’s board. They also get to see what 3 effects are up for selection, and can pick within the Audience Voting time.
  3. They select 1 choice. Once selected, they can still change their choice until the Audience Voting time is over. (Whether they can see the current number of votes per effect is unknown, but this might be interesting, since it might make the audience try to persuade each other to change their votes)
  4. After Audience Voting time, the effect is implemented. The next Audience Voting time begins, with a new set of effects.

Things which I haven’t decided:

  • If there should be a maximum audience limit
  • If there should be a lobby where anyone can join any room (i.e. may have to provide private rooms as well)
  • How much time to allocate (e.g. 30 seconds for audience voting, 5 seconds for Player to see what effect was attributed before it’s activated)
  • If the Room Code should be just shown on the player’s screen (a little awkward for solo players, but useful for screensharing, e.g. like Jackbox)
  • How to make it work for mobile & computer (most likely, I won’t implement playing on mobile, but it seems likely that audience would use their phone than a computer)

Alternatively, I may consider other ways of implementing the audience, such as Twitch Chat (a la Dead Cells). For now, I’m intending to try out Mirror, the substitute for the recently-deprecated Unity NetworkManager component.

From Cryaotic’s stream on 14th Feb. Yes, I watched it, like, right before class.


I’ve been recommended to use a single script for everything, which is the fairest judgment possible, because the cross-references between scripts right now are too… Much.

I desire to never see FindObjectOfType again

So I shall work on that, and attempt to implement the Next queue in the meantime. Also, to attempt to create an algorithm that selects the effects, than selection based on key presses.

[W4IfD] Assignment 1 Process & Final

UPDATE: I added a video version!

The animated GIFs are too big, but here’re links for Gwen and I! (Please. They’re necessary.)


The initial point was an interview with Gwen. We hardly knew each other, and thus asked a few questions each via Telegram. Other than that starting point, we also took various free time opportunities in class to converse, getting a general sense of our various opinions. This included, for example, thoughts on things like religion and philosophy, as well as hobbies and reasons for it.

Part of the initial conversation.

Based on the results, I identified key words, and compared traits against myself. The conclusion was as such (Gwen / Me):

  • Social / Independent
  • Emotional / Practical
  • Country / City
  • Efficient / Analytical (? based on our working styles, where she seemed much more put-together)
  • 3rd Personal / 1st Personal (in terms of how I perceive us, since I see myself from within myself, while I see Gwen from her outside)

This translated into the following decisions, where I believed these to most aptly display our differences:

  • Outdoor / Indoor
  • Open / Closed
  • Natural / Constructed
  • Painted / Modelled
  • Curved / Cubic

Nevertheless, there were many points where we aligned, such as our perspective on self-actualisation, and our varied interests. As such, I also considered the use of Perspective than Orthographic, to represent that 3-dimensionality. Also, for our portraits to Seamlessly Intersect, such that the portraits (and us!) can be connected without any issues.

I also checked out relevant images to whatever Gwen had mentioned in our talks, in an attempt to acquire a moodboard of sorts. These images were also set to greyscale, to avoid colour bias due to the limitations of the assignment prompt. Here’re the images:


As my approach doesn’t quite look at specific events or items, I surmised that it would be best to rely on emotion evoked through a scene, than symbolic objects. This, as would later be affirmed in class critiques, made it difficult to create an illustrative piece that was concise in its meaning. Here are some samples of the earliest compositions, which look like shoddy attempts at still life drawing:


Consequently, I looked for ways in which other illustrators display “spaces”, while still being distinctive and clear. While I looked at a variety of sources, my primary inspiration was Ronald Kuang / SeerLight, who often uses geometrical shapes and gentle colours to depict locations.

By SeerLight, an example of the milk carton shape used to suggest a building. As found at https://www.deviantart.com/seerlight/art/Cyberpunk-Milk-755347124.
Also by SeerLight. Subtle animations are also a trademark of his. As found at https://www.deviantart.com/seerlight/art/To-the-next-adventure-815132728

Thus, I decided that the best way to represent our distinctive traits was to use a contrast of Organic / Geometric shapes. This way, the very form of the elements is an indicator of our characters. Additionally, this means that, when using animation, I can use the same shape to represent various different items, retaining a proper focal point without cluttering the composition.


I did mine, of the geometric, in Blender, where orthographic drawing from scratch is not my strong suite. It is made of cubes, cubes, and only cubes, a call to my comparative rigidity and practicality. After which, I traced it on Illustrator.

The biggest object is the bed (of course!), followed by the computer, and then the cutlery. It’s a representation of my 3 priorities: sleep, Internet, and food. I placed the door as a counter to the struggle for dominance: unlike those 3, the door is verily small, an indicator of just how much I hate to go out. The animation is much simpler compared to Gwen’s, but feels oddly apt: Much of it is just repetition without significant changes, just like much of my everyday life as I hide out at home.

The line-only draft.

Gwen’s features curves, curves, and only curves. Since she appeared to be someone rather emotional, and almost spiritual, I placed many of the things she enjoys seeing, such as the sun, plants, waters (the sea), and the bowl (for plants, but also for fish sometimes). When I mentioned this to her, however, she hastily said that she only enjoys watching, as she’s terrible with keeping things alive. Consequently, I added the eyeball, a manifestation of her gaze. I’m blessed that all of these use the circle as a base shape. Thus, the animation can encompass all, by having the circle change from being that of a “bowl”, to that of the “sun”, and the “eyeball”.

With base colours, until I remembered.

All in all, I’m surprised that the lack of colour wasn’t a major problem. Nevertheless, the sun on Gwen’s portrait is tragically misaligned, probably because I failed to set the origin point properly. It’s only my second time using Adobe Animate, oof. Also, I feel like the eyeball might not have come across very cleanly: in hindsight, it might have been better to have it centralised than facing the side, where it’s rather difficult to identify what it’s supposed to be.

Perhaps the approach I took wasn’t necessarily the best, either, since I focused on the dichotomies between both of us, than seeing Gwen for who she is. While it helped in the eventual creation of the Organic / Geometric division, it might be worthwhile to try seeing others as they are, than as compared to me.

[W4GD] hi this is a tedris talk

Life is about suffering and Tetris is suffering. Let’s go!

Also, tutorials which I will totally probably need:

  • Unity Multiplayer using Mirror (link)
  • Coding My Own Tetris (Unity) (link)
  • How to create an online multiplayer game with Unity (link) (may be outdated due to deprecation)
  • How to Create a Multiplayer Game in Unity (link) (may be outdated due to deprecation)