Thursday, March 14, 2019

Skills for kills, Agent

I don't remember why I bought the original Crackdown. I wasn't a big enough fan of Halo, so it can't have been the multiplayer beta that came bundled with it. I don't remember playing the demo, either - but for whatever reason, I took a punt on it and fell in love.

It's probably fair to say that Crackdown changed my life. If it hadn't been for that 2007 open-world blow-up-'em-up, I'd never have heard of Realtime Worlds, and I'd certainly never have moved to Scotland to work for them. I am where I am because of Crackdown – literally, I'd not be sitting on this sofa in this house in this city in this country.

The direct sequel never made much of an impression, though. I did play the demo for that one - and its return to the same city (more or less) and the addition of 360-straining crowds of zombies felt respectively like a disappointment, and a distraction from the aimless purity of the original game's experience.

My brother's description of Crackdown as "it's not a game, it's an excuse" has always perfectly captured the anarchic spirit of Realtime's 2007 superhero simulator. You start the game able to leap 20 feet vertically, and as you amass further weaponry, vehicles and skill points for using them, you only become more of a threat to the criminals (and bystanders) of Pacific City. By the end of the game, you're bounding over entire buildings with ease, carpet-bombing the streets with a flurry of homing rocket, and jumping a souped-up monster truck hundreds of yards off freeways.

This focus, or the lack of it, on giving you all the tools and skills you need to do anything and then letting you do it feels like both the forerunner of and a departure from the modern trend of open-world collect-'em-ups. But Crackdown didn't overcomplicate things with sidequests and collectibles (beyond the Agility and Hidden Orbs, neither of which cluttered your map). There were a handful of boss characters to take down with the barest semblance of a plot to tie them together, but no lengthy cutscenes and no lore.

The third installment, which I've been playing via a GamePass trial, is almost a total return to the classic Crackdown formula. The addition of an actual story (which seems to totally ignore the "twist" at the end of the first game) gets in the way more than it helps, but otherwise this is just more Crackdown.

For most franchises that might be a bad thing - yearly releases and stagnation across genres means few titles actually stand out much beyond their presentation, but by returning to its roots Crackdown 3 manages to make an impression. Stripping away most of the cruft, letting the player loose in a sandbox with a ludicrous array of toys and targets, allows you to set your own goals and never feel like the game would rather you were following its breadcrumbs. Want to spend hours collecting orbs? Go for it! Want to get into massive firefights and blow up everything the bad guys can throw at you? Go for it! Want to race? Go for it! Want to progress the campaign? Go for it!

There haven't been many games that give me this kind of reckless abandon - the last one might have been its own predecessor, but by that measure alone Crackdown 3 is a riotous success.

Tuesday, October 09, 2018

13th Age

I'm trying to write an adventure (or actually, several) for a new tabletop RPG campaign that's going to start in a couple of months, and I am struggling.

My issues stem, I think, from how different the new system, 13th Age, is from the game I finished running last week, Monster of the Week. Where MotW is extremely light and relies heavily on improv, 13th Age is much closer to D&D's school of thought, with much more stuff to track moment-to-moment, especially once combat starts. The notes required for an entire arc in MotW feel like they'd barely be sufficient to cover a single scene in 13th Age.

While it should be easy enough to adapt the approach that worked for Monster of the Week into any other roleplaying system, in practice I'm finding it hard not to take things in a rules-heavy direction, with pages and pages of stuff written up.

Monster of the Week's missions - called "mysteries" - are largely self-contained and driven entirely by the players' investigations. The most amount of planning in a mystery is writing the six-point "countdown" of events that would happen without the players' involvement. Each location and character only needs a name and a role to indicate their involvement. I added a personality trait and "what this person knows" to my bystanders - a couple of lines, total, and almost no prepared dialogue.

Compare that to the eleven pages of stuff I've written for the first adventure in 13th Age - and that's not even all of it finished yet! I've got sketches of scenes and characters and places that would be more than enough to run with in Monster of the Week that I feel compelled to flesh out for this game. Monster of the Week's contemporary setting helps, as there's often a common real-world or pop culture reference for what a trailer park or a military base or someone's living room looks like, but a fantasy game demands (it seems) a level of ornate and detailed description that quite frankly I'm not sure my writing skills are up to.

Of course, it could just be a matter of the tools I'm using. Monster of the Week's lightweight setup lent itself perfectly to Trello boards, with columns to group cards for locations, bystanders and the monsters - but there's a separation between roleplay and combat in any initiative-driven that makes it too complex for Trello. Google Docs has been okay for making notes and blocking out the rough timeline for an adventure, but its layout encourages linearity, and I'm concerned it'll be difficult to jump between sections in the heat of a fight.

Hmm. Suddenly, I'm worried that I'm going to end up writing my own system to store everything.

Wednesday, May 16, 2018

Ejector

On Sunday morning, I woke up with a game idea stuck in my head; I spent a few hours with GameMaker over the course of the day, and by 9pm I had something I was happy enough with that I posted about it on Twitter. I'm never happy with my stuff enough to post about it on Twitter.

It's still full of other people's art assets and unlicensed fonts, and most of the code is borrowed from ShaunJS tutorials (but that's what they're for and anyway I used to work with him, so that's probably okay).

As I've worked on it over the last couple of days, and started thinking about how to make it a game rather than just a partially-implemented mechanic, I've come to realise that it's pretty much Nanaca Crash: the player has some limited control over the initial vector of their character's travel, and then it's basically just a case of seeing how far they can go.

I'd started to write about another GameMaker project I was working on earlier this year, but when it came to implementing the shooting mechanics I realised that I didn't want to make a game about shooting, so that's been canned until I figure out what the verb needs to be.

(This is still kind of violent, but it's very slapstick and only against your own character so I feel like that's okay.)

I'm close to getting all of the input mechanics finished - rather than Nanaca's single click-and-hold for both angle and power, I want to separate them into a hold for setting acceleration and some kind of Ouendan-type trigger for controlling angle (in progress). Initially these inputs were both controlled by the car object, but since I'm hoping to eventually have an upgrade system that would let you change the car, moving them into a separate launch controller took up most of today.

I'd dropped a basic sin() function in for setting the acceleration value - which worked for the proof of concept, but in practice the way it decelerated around the maximum value made it too easy to get the best distance reliably (in the absence of control over your launch angle).

acceleration_modifier = (1 + (sin(frames_held/period + 3*pi/2)))/2;

What I was after was a curve that would speed up as it got close to the maximum value, and bounced away just as quickly, making it much harder to hit the top every time. It was only when I drew out what I wanted that I realised that it's still basically just a sine wave, but with part of it inverted - which led me to

acceleration_modifier = 1 - abs(sin(frames_held/period + pi/2));

And now, onto the launch angle…

Friday, May 11, 2018

Where we were together

At first blush, there are not many obvious similarities between Say Sue Me's lazy winding surfgaze and Aimee Mann's more traditional indie pop, but listening to the Korean quartet's latest album, Where We Were Together, over the last few days, I can't help but feel like they're musical siblings, somehow.

When her most recent album, 2017's Mental Illness, was released I got quite annoyed by the reviews consistently describing Aimee Mann's output as "depressing". Although there's a deep melancholy to many of her songs (often disguised under a major key and an upbeat tempo), it's not accurate to say it's depressing; I've come to the conclusion that a more truthful description would be that it's depressed.

But at the same time, there's no sense of resignation or defeat - acceptance, maybe, but I've always found it somehow hopeful. It's the music of coping with your problems, of feeling sad or anxious or unloved but still picking yourself up and getting on with things - in a way I find helpful when my own subconscious threatens to overcrowd me.

I get that same sense from Where We Were Together: a reassurance that nothing is as insurmountable as our own demons would have us believe, that we're not as alone in our troubles as we often feel, and that there's light just around the corner.

Monday, April 02, 2018

Doki Doki Literature Club

Doki Doki Literature Club

Warning! Spoilers follow for Doki Doki Literature Club and The Beginner's Guide

There's a content warning at the start of Doki Doki Literature Club which is, on some level, a spoiler. It's not unusual for visual novels to touch on heavy subject matter, but to call attention to it before the title screen does stick out.

Up front, I feel like I need to say that this is a game worth playing, if you can get past the anime/VN presentation. I don't remember the last game that surprised me with its audacity this profoundly, let alone this often (and all in a package that I saw end-to-end in a little over four hours). Its density of ideas and the quality of its execution, within a medium that's uniquely suited to tell this story this way, is hugely impressive.

It will help if you have some familiarity with harem anime or other visual novels (both their general content and mechanics, even if you've not played any others; you've got to be willing to meet the genre halfway on its long periods of clicking through and reading dialogue). There are common tropes and archetypes it uses as shorthand - the childhood friend, the overly familiar upperclassman, the reluctant new club member - that not only make the opening 30 to 60 minutes much more efficient, but which set up expectations that can be exploited later.

I've been unpacking what the game means since I finished it earlier today, both its "message" and my interpretation of it, and the closest game I can think of, philosophically, is Davey Wreden's The Beginner's Guide - albeit coming from a radically different angle.

Last chance to turn back.

Wednesday, January 10, 2018

Isometrish: Automatic walls

Obviously, when you're building a game level (and especially if, like I hope to, you're building it procedurally), you can't spend ages making sure you've put the correct-facing wall object down at every part of the level, or fixing them every time you move a bit of floor around.

Well, you could, but wouldn't it be much better to just have a single wall object that could automatically detect which sides it needed to match to the neighbouring floor tiles?

Yes! And luckily, this is really easy to do!

There is some heavy lifting involved, though: you'll still need a sprite with a separate frame for each possible combination of walls - north on its own, east on its own, north and east together, south on its own, north and south together…

(If you want a shorter notation, you need 2n-1 sprites, where n is the number of sides you need to consider. For most cases, this'll be four, so you need 24-1, or 15 images - plus one with no walls.)

But how do you know which image to draw based on the combination of faces required? Binary!

Assign each face a binary number - for a square, this'll be 1 for North, 2 for East, 4 for South and 8 for West. The neat trick with binary numbers like this is, the sum of any subset of them is unique! Which means we just need to add up the numbers corresponding to each 'active' face, and that tells us which image to load.

In GameMaker Studio 2, sprites have subimages - this is most commonly used for animation frames, but we can also use it here to keep a collection of images together in a common object. You need to make sure the various subimages are added in the correct order (the easiest way to do this in GMS2, I found, was to save the images into a common folder numbered 1.png to 15.png, then use the 'Create sprite from image(s)' option).

A hideous example of a 16-frame wall sprite

Now that our sprite is set up, we can add the following to the object's create event:

iso_sprite = sWall;
var f = 0;
if (place_meeting(x, y - grid_size/2, oFloor)) f += 1;
if (place_meeting(x + grid_size/2, y, oFloor)) f += 2;
if (place_meeting(x, y + grid_size/2, oFloor)) f += 4;
if (place_meeting(x - grid_size/2, y, oFloor)) f += 8;
iso_subimg = f;

This checks the room for a floor on each side of our wall, and adds that face's value to the total, resulting in the correct subimage index that we need to draw, which is done in the draw event:

draw_sprite(iso_sprite, iso_subimg, screen_x, screen_y);

(In this example, screen_x and screen_y are the pre-converted grid-to-screen coordinates.)

And presto - a single wall object that you can drop into your room, which will automagically show the correct wall faces for any surrounding floor tiles!

Friday, January 05, 2018

Isometrish: Perspective

The top-down grid

Do you ever suddenly realise that you understand something that's been bugging you for days, and then find it impossible to see how you didn't get it in the first place?

GameMaker is great at 2D - side-scrolling and top-down games are a breeze to get working. There are dozens of video tutorials that can get you up and running with a platformer in fifteen minutes or less. But if you want to do anything slightly more complicated than that, well… time to do some maths.

Luckily for me - and you, if you're wanting to do this yourself - YellowAfterlife has a really good piece (aside from some confusing terminology) about translating grid coordinates to on-screen coordinates which, although it still took a lot of practical trial and error for me to really understand, gave me enough confidence to actually start trying things.

While drawing objects to the screen is the more technically challenging part of the process, it actually took me longer to understand moving around - even though it's really simple.

The short version is, I needed to realise that the character's not moving on the screen, but moving on a 2D plane (as if you're doing basic a top-down game); those 2D X and Y coordinates are then warped by a couple of simple functions to correspond to the on-screen, 'isometric' plane that's on the screen.

Basically, you don't need to care about the screen coordinates- the maths will take care of it for you! Just do your stuff as normal, and the maths around the drawing step takes care of the rest.

Mind: Blown

Which can use the exact same movement code I used in the top-down version, and results in this on the screen:

The screen

I had some other issues drawing things in the right place - like I said at the start, that's actually the technically complicated bit.

I'd assumed, incorrectly, that when you're drawing a sprite in code the X and Y coordinates you give it would be where it started drawing, with the top-left corner of the sprite. Turns out the origin you set in the Sprite window matters! For walls and floors to line up correctly, this means you need to set the origin in the same place on the 'floor', which took me some time to figure out (particularly since the sprites in the room editor aren't the same as the ones you'll see when playing).

I also hit some trouble with aspect ratios because my grid (and the isometric sprites) were larger than those used in YAL's example - and since I'm still not 100% on the maths involved it took a little bit of trial and error to iron that out. (Turns out you just need to calculate the ratio of the isometric tiles' dimensions to your grid squares'.)

The way GameMaker Studio 2 handles 'depth' for draw orders has changed slightly too, favouring its built-in layers which are, in practice, pretty incompatible with isometric drawing (but are still really handy for organising objects in the room editor). The documentation suggests you should still be able to arbitrarily assign depth to your objects, but in practice I found that doing so prevented them from rendering at all, until I added the following in an init script:

layer_force_draw_depth(true, 0);

So now I've got a map, and the ability to move around it! And, as it turns out, right through the walls…

Thursday, January 04, 2018

Isometrish

First rendering walls

Right, fuck it. I'm going to write about something that terrifies me: my own code projects.

About the only thing I've programmed 'publicly' is a 140-character random level generation script (in Ruby). I'd written it in JavaScript originally, but decided for no particular reason to try and shorten it until it fit in a tweet. (This was before tweet length got doubled.)

def l w,h;g=(1..h).map{[]};y=rand h;x=g[y][0]=0;(g[y][x]||=1;n=y+rand(-1..1);n>=0&&n<h&&g[n][x].nil?? y=n : x+=1)while x<w;g[y][x-1]=2;g;end

But I've started something a bit more ambitious: I'm trying to make a game. Or at least, most of a game's systems.

I worked at YoYo Games for over six years, and it's only since I left in November that I've really started to use the product, GameMaker. I've thrown together little proofs of concept - platformers, a tank driving thing, some experiments with shooters - but never really had a specific goal in mind.

Having something to aim for means having something to miss; it's easy to just try out hitscan shooting in a tiny demo level, but make a game?

I'm now a couple dozen man-hours into a clone of Crusader: No Remorse. I don't know how often, if ever, I'm going to write updates on my progress, but I want to try and get less defensive about my code, and exposing some of it to the air might help.

(It helps that I don't expect anyone to read this, though.)

I've been meaning to find something to make me blog more this year, and maybe this is it.

Sunday, December 17, 2017

Monday, December 11, 2017

Works Great

My game of the year for 2017, is a puzzle game which, on top of having no 'correct' solution at all to its puzzles, expects you to look at your own solution and say, "no - this still isn't good enough". Your first answer is almost always an inelegant, brute-force monster that gets the job done; over time - both looking at the field and in your moments away from it - you can tame it, turn the hammer into a scalpel by trimming its size, stripping its parts or reducing its movements to the bare minimum required to complete its very specific task.

My game of the year for 2017, surprising absolutely nobody who follows me on Twitter, is Opus Magnum.

Waterproof Sealant

There's a story to Opus Magnum, about a young alchemist working for a noble house, mostly insulated from its political troubles, but you don't need to click through its dialogues to start solving a puzzle - the conversations that tell the story are almost literally a sidebar next to the game interface. For most of the game I didn't realise there was a story; I was too busy jumping into the next challenge - or more often, back into the same challenge over and over again trying everything to shave a few precious cycles off my solution.

The game's presence on Twitter piqued my curiosity, as other players shared hypnotic, impenetrable gifs of machines whose inputs, operation and purpose were impossible to discern. I understood, at some level, that it was a programming game - the developer's pedigree includes SpaceChem and Infinifactory - but the brassy, steampunk aesthetic and the alchemical theme appealed to me immediately.

I'd also been playing around with code golf, an exercise in reducing an algorithm to the shortest number of characters necessary without inhibiting its function. (My favourite result is a random level generation script in 140 characters, which I'd been tweaking for nearly three months.) I didn't realise it until, out of curiosity - mostly about how these machines are made, and more importably controlled - I bought and loaded it up, but Opus Magnum is basically code golf the game.

When you've solved a puzzle, the game shows you three histograms, indicating where you sit on the bell curve in each of three metrics: the area required for your machine, the number of cycles it took to complete its goal, and the cost of the parts. None of this matters - there are usually several puzzles open at a time, completable in any order, and as soon as you've solved a challenge once it's checked off and you can move on.

Except, if you're the kind of person who'll finish one puzzle and move immediately on to the next, this might not be the game for you. Opus Magnum is about obsessively tweaking, refining, adjusting. My favourite times with the game have been rebuilding a machine from scratch because I'm convinced that I can improve it, only to discover that a minor miscalculation has made it three cycles worse.

What makes it work, as an experience, is its machines' predicability. Once I got to grips with the basics of the system, those gifs that had mesmerised me on social media took on a whole new meaning; I could appreciate the effort behind them, understand and adopt their ideas into my own efforts, transmuting strangers' engines and my own into something entirely new.

Alcohol Separation

Sunday, July 23, 2017

Take Your Heart

Take Your Heart

Persona 4 is, at its heart, a story about facing, coming to terms with and ultimately accepting the parts of yourself that you'd rather not, so that you can become a better person on the other side. Characters earning their persona is only the first step on that journey; they continue to work on accepting and overcoming their issues as the game progresses. Most of the character arcs in Persona 4 could be told without teenagers solving murders committed in an alternate dimension inside their televisions.

Persona 5 is about characters feeling like other people just don't "get" them. Also adults totally suck amirite? And in addition to being inextricably linked to the story, the cognitive "Palaces" aren't based on the psychology of your teammates (i.e., the people you should care about), but of your opponents.

I had to struggle to care about most of my confidants in P5; any S-Links I maxed out felt like obligations rather than relationships I wanted to pursue or that I just fell into. Persona 4 Golden's S-Links didn't universally have rewards - only your direct party members' links would benefit you outside of bonus fusion XP - but they were so natural and the characters interesting enough that I didn't need that carrot to drag me through.

This might be a function of where you start as P5's protagonist - a total outsider, even by "transfer student" standards, with rumours of a criminal record causing NPCs to hold you at arm's length (at least until you start building your party and the mumurings of anonymous classmates loses its impact). There aren't any club activities to draw you into social circles outside the party, at least until you start taking advantage of your teacher's part-time job or get involved in questionable medical experiments (for a reason I can no longer recall) - both of these older women are romanceable, though it's difficult to tell who's being exploited more in these troubling relationships.

Your progress with sidequests is constantly stymied by the game's refusal to let you just do things; there's a significant chunk in the middle of the game where it felt like Morgana wouldn't let me do anything with my evenings, leaving my S-Links and part-time jobs in limbo for no readily-apparent reason.

And the story employs an in media res device that is designed specifically to withhold information that your character knows from the player - all so that a plot twist, which didn't land anyway, can work on its most basic level. Which isn't even the only major disconnect between player and character knowledge - its obvious to the player from around the second dungeon who the big bad is, but your party continues to fumble their way towards their reveal frustratingly slowly over the next fifty hours of gameplay.

All of which is intensely frustrating because Persona 5 is, mechanically, light years ahead of its predecessor. While previous entries in the series used procedurally-generated dungeons, the Palaces in P5 are bespoke, crafted levels - which allows for more complicated puzzles and set-pieces that wouldn't have been possible in P4G's random mazes. (That these dungeons often outstay their welcome is another issue.) P5 has its cake and eats it, though, with the Mememtos labyrinth providing a randomized grinding playground as well - which also feeds into side-quests and the main plot at different points.

The battle system's been streamlined, they've added ranged weapons (and frankly, too many damage types), and allowed the chaining of attacks when you hit an enemy's weak point. If you Down all the enemies on the field, you can negotiate with one to get extra cash, take an item or add it to your Persona roster.

It's made me very excited to see where they evolve the series next (in about 2024, if there's a similar break as between 4 and 5), but as much as I'd like to see the end of some S-Links and subplots I didn't get to this time around (and want to date someone who's more interesting than Makoto turned out to be), I don't know if NG+ is all that tempting considering how tedious so much of the game can feel.

Friday, June 30, 2017

Tsuki ga Kirei

Image changed due to a DMCA takedown notice

Ten minutes and thirty-three seconds into Tsuki ga Kirei, I knew I was in love.

It was a wordless moment of such relatable teenage anxiety and bravado and posing. I felt my chest tighten for Koutarou as he switched his drink order from soda to coffee to impress a girl from school who happened to be at the same restaurant with her family. She probably didn't even notice, so absorbed in her own self-consciousness and terrified about what playground gossip would make of it if anyone found out they were there "together".

In its, at times naive, earnestness, Tsuki ga Kirei captures perfectly that sense of helplessness that floods your senses when you're thirteen and find yourself unexpectedly faced with the person you have a crush on.

It was a mild anxiety attack spread over twelve episodes, as I sat on the edge of my seat hoping that these two sweet, terrified and dumb-in-the-way-that-only-love-can-make-you kids would navigate through this emotional minefield to something like happiness on the other side.

Wednesday, June 28, 2017

Baby Driver, after

I can't believe it lived up to the hype.

Baby Driver opens with a car chase you've already seen most of in the trailers, but it's still glorious when viewed all in a single sequence. That 180-in-180-out - one of my two favorite stunts in the whole film (the other is the tire shredder) - is cut a fraction shorter than I'd have liked but there's probably a technical reason for that.

Edgar Wright gets a lot of credit - deservedly - for his rapid editing and propulsive montages, but Baby Driver also has some great long single-take(?) sequences. The action-packed opening chase is followed by a multi-minute shot tracking Baby as he buys coffee for his accomplices (I'm 99% sure I spotted a Pierce Brosnan cameo), and there are a couple of others that are just as confidently executed.

And Baby Driver also takes Wright well outside of his established comedy wheelhouse - there's palpable danger hanging in the air between Baby and [spoiler] late in the film. Shaun's finale had dramatic weight, but this is a whole other level. Which isn't to say that Baby Driver isn't funny in places, but you might be disappointed if you're expecting a Hot Fuzz-style comedy.

My pre-movie concerns about the employment of women in the film stand validated, though - they just don't have any real agency and in this day and age that's a poor state of affairs. Reviews have called Baby Driver a love letter to cinema and music but I'm a little frustrated Wright doesn't get as inventive narratively as he does visually. Enough remixes - give us an original composition!

Baby Driver is the best there is at what it does, but what it doesn't is impossible for me to ignore completely.

Baby Driver, before

Baby Driver

I'm writing this before I go to see Baby Driver (this should be posted just as it starts) because I want to get these ideas down before watching the film changes how I think about them.

I've rewatched all of Edgar Wright's feature output in the last fortnight, and even if I hadn't I'd be an easy target for Baby Driver. There's little doubt in my mind that he's the best action director working today (in the West certainly), and I've been on the edge of my seat for Baby Driver ever since the synopsis dropped.

But I'm very aware of my own hype for this film. I'm so caught up in the positive reviews - which I've not even read any of in detail, the buzz just feels inescapable - that I'm half waiting for the sword to fall and half imagining how and how much I'm going to be enthusing about after I've seen it. Hype is giving way to a cold animal fear that it can't live up to the rumbling positivity, and my brain is stuck on one particular angle.

All of Wright's films suffer from a dearth of strong women. The women in his films are almost all (or are they all?) sidekicks, or girlfriends, or girlfriends' mates, or maybe antagonists (but not the Big Bad). Baby Driver looks set to continue this trend, with the female lead both the protagonist's girlfriend and very probably a damsel in distress. She's even a waitress, for God's sake - basically movie shorthand for "I need a man to save me from my own existence".

Wright excels at employing tropes, but rarely subverts them (beyond transplanting American clichés to unprepared English idylls).

Is there a reason Baby has to be a guy? Couldn't Mozart in a gokart be a woman? I'm trying to think of something in the plot that would prevent a gender swap, but all I'm coming up with is that this is what the genre demands and that's just… not good enough.

Tuesday, June 20, 2017

Re:Creators - more complaints about 7/10 anime

In the first episode of Re:Creators, there's a great scene where Selesia, a light novel heroine from a fantasy/scifi world, fights teenage magical girl Mamika. Selesia challenges Mamika to consider how her claims of fighting for justice can sit next to the collateral damage (mostly caused by Mamika) that resulted from their battle. Coming from a kids' show, Mamika's fights have never endangered bystanders before - she's horrified. But the show doesn't go into the moral quandaries or ideological differences between the characters, and its disinterest in the inner lives of its cast ultimately damages the macro plot as well.

Re:Creator's fundamental flaw is that none of its characters seem to have any problem accepting the situation they've found themselves in.

But despite being pulled suddenly from her fictional reality into our world, Selesia never struggles to come to terms with the fact that her entire existence - every moment of joy or pain, every defeat and victory she's ever lived through - is an invention purely for entertainment. I need her to react to this somehow, but her unflappable heroism in the face of this revelation blows a hole in any believability her character could otherwise have had.

It's not that every character needs to have an existential crisis - Meteora's ability to absorb information almost by osmosis from the world around her means she's going to process the situation faster than others - but no matter how unflappable their fictional character bio says they are (there's a recurring excuse about "that's how I wrote her! ¯\_(ツ)_/¯"), there should be some stumbles. Only one member of the cast has a bone to pick with her creator, and even that's all but an afterthought.

In the most recent episode, Selesia has a conversation with the author of her novels about whether she would want to go back to her fictional world, but there's an unanswered - actually, unasked - question of whether she can, and what that could mean for the story. She's found out that she's a literal fantasy and it doesn't occur to the show that this proactive, brave warrior might want answers from the person who put her entire world in harms' way for his own interest.

At every turn, Re:Creators shies away from digging into any of the interesting questions that its own premise raises, and as a result the things that it does bother to put the effort in for - highly-dramatic battle sequences, mostly - are airless, rote affairs between characters I just can't find a way to care about.