Author Archive for Craig Timpany

08
Apr
14

Pinballesque v0.04

More Pinballesque!

  • A new table: a proof of concept for multi-level tables. It’s a rough cut to try out two sets of flippers. The idea is that there’s a high risk/high reward upper table with really wide set flippers, and if you lose the ball, you can still recover it on the easier, narrower table.
  • In an attempt to shorten the aiming learning curve, I’m displaying a prediction line when the ball is resting on a flipper. I also show the full range of angles that can result from the flipper position.
  • Simplified gamepad controls to moving flippers in sync with each other, instead of each stick moving a flipper independently. It didn’t add much and made it much harder to learn. You can use both thumbsticks in unison to move the flippers faster.
  • The gap between the flippers is now constant. I used to keep one flipper near the centre to make juggling from flipper to flipper easier, but it’s kind of redundant now that the ball has more friction force from flipper movement.

I changed the GUI from ImGUI to NGUI in preparation to do the bulk of the UI screens. (I’m thinking Jetpack Joyride-style minigoals). NGUI is frustrating the hell out of me. Anchored objects work fine for a little while, then freak out and go walkies later on, and I still haven’t been able to identify why. The featureset of NGUI sounds awesome, but I wonder how much of it is riddled with bugs?

22
Mar
14

Pinballesque v0.03

A new Pinballesque build is up:

Physics/Controls:

  • I’ve redone the flipper physics so that they no longer glide frictionlessly under the ball. (Setting a Box2D rigidbody’s velocity directly is more respectable than teleporting its position. Using forces was simply too laggy)
  • The flipper bases now have nubbins on the end opposite the flipper to stop the ball from rolling off.
  • Added gamepad controls. I’ve only tested them on a 360 controller so far. Gamepads give you the ability to move the two flippers independently.
  • Flippers can now cross the center-line by a smidge, to help out when you lunge with the wrong flipper.
  • Mouse sensitivity is now consistent between different resolutions.

Visuals:

  • The combo blocks now have symbols associated with them to make it easier for colour blind folks.
  • I animated the combo blocks entering the combo stack. I use a depth mask above and below the stack and suspect it may cause compatibility problems. Let me know if you see blocks poking out the end.
  • Added light effects when you collect a combo block.
08
Mar
14

Render tests for Pinballesque

I’ve been experimenting with different art styles for Pinballesque. Here are some of the test renderings I’ve made with Zen Photon Garden, a 2D raytracer (the high quality batch version, not the web based one).

Zen Photon Garden is unusual because instead of the output being based on lit surfaces, it’s a map of photon density across a 2D area. This gives an interesting smoky look where every shaft of light stands out in stark relief.

Film noir styles! If only my game weren't about colour combos...

Film noir styles! If only my game weren’t about colour combos…

Woah. Too disco.

Woah. Too disco.

I said 'too disco'!

I said ‘too disco’!

After manual compositing in the GIMP

After manual compositing in the GIMP

Some promising results, but for consistencies’ sake I’d have to do lush shading on all the rest of the art too, which is daunting. The dark lines extending from the ends of the walls are an artefact I’d like to get rid of. I think I can fudge it in my Unity -> ZPG exporter by rounding the corners of the boxes.

26
Feb
14

List of Olympic events to be discontinued

In the wake of Sochi, the IOC have opted to discontinue certain events due to adverse outcomes:

  • Men’s Deep Jump
  • Super heavyweight pole vault
  • Clean and Jerk and Throw
  • Shouting (Men’s Lorem Ipsum)
  • “Turkish” Running (Women’s, 7m)
  • Equestrian Half Pipe
16
Feb
14

Moving targets a non-starter

I spent a big chunk of this week trying out moving targets in Pinballesque. They’re tempting because they’d let me build a game out of spawn patterns and movement behaviour rather than table geometry, which would be less work. It turns out they suck pretty hard in this game:

  • The combo system is all about making patterns, so inadvertent hits are really punishing. This rules out spawning a big jumble of objects. In Breakout it’s a good thing if the ball makes it through the outer layer and starts bouncing out of control in the interior layers, but that’s death with this combo system. I wound up restricting them to a single layer and tried to make sure the return angles were fairly straight.
  • I needed to move the objects very slowly, so the player has time to wait for the ball to roll to the right part of the flipper. To change the configuration of objects at more than a glacial pace, I rhythmically pulsed the movement.
  • I needed to make the objects fairly large as well.

Add it all together and the experience isn’t really that much different from a series of ramps that periodically cycle through colours.

06
Feb
14

Pinballesque, prototype 1

Here’s the pinball redesign I’ve been working on for the last couple of weeks:

Play Pinballesque

  • As I mentioned in the previous post, I want the goals in pinball to have more internal consistency underlying them. I’ve made a combo system where you get points if you collect colours in some kind of pattern (consecutive repeats, rainbows etc.). Sorry colour-blind folks, I really ought to add symbols too but I haven’t gotten to that yet.
  • You can move the flippers from side to side. They rotate as they move to allow a range of shot angles, so I can tighten the flippers’ flick angle down, which reduces the precision of the timing that a player needs to hit a target.
  • They’re also gigantic flippers with a very gentle slope. All to get a larger timing window.
  • I’m still playing around with different schemes for moving the flippers. I ought to play around with different input -> response curves.
  • Always keeping the pair of flippers adjacent to each other felt too Breakout-ish. Making one flipper mirror the other made transferring the ball from flipper to flipper really hard, as did moving them in synchronisation on their own halves of the track. I haven’t tried mapping them to thumbsticks yet, but it’s promising.
  • It’s hard to evaluate how successful I’ve been with the crappy table design. I feel like there’s a ton of room to improve on that, but table design is tricky and it really is a time sink.
  • For fun I put in some tinkly marimba notes with pitches driven by the sequence of colours.

First impressions of Unity’s 2D support

  • The sprite renderer looks handy. I dig the new editor handles and the atlasing support.
  • The 2D physics engine is way less configurable than PhysX, and I regret that I didn’t just use 3D physics with one dimension and 2 rotation axes locked. It’s missing some really obvious stuff: moving/rotating objects without teleporting to the final position, a ConfigurableJoint equivalent, configurable bounce/penetration thresholds and so on.
  • That said, being able to edit the polygon of the PolygonCollider from inside the editor is really, really convenient. (Shift and Ctrl click on the collider outline)

Sound in Unity

This is my first time using sound in Unity. The built-in support is monomaniacally focused on sound in 3D environments without any of the other stuff a game typically needs (control over polyphony, priority/duplicate handling, ducking, loop boundaries and loop mode, variant sounds). I previously thought GUIs were the most unloved part of Unity (and the most likely to be summarily replaced with an Asset Store hack), but sound’s definitely a contender.

(I love that it has tracker module support out of the box, although  – characteristically – there’s no control over the playback. No channel volumes, no tempo control, no seeking to patterns)

The dumbest thing is that FMod is built into Unity, you just can’t see any of it from the script layer. My former co-workers, the Curry Brothers, have managed to do an end run around this by writing C# bindings for an FMod DLL that they include along with the exe. Surprisingly you don’t need Unity Pro for this. It won’t work for web player builds, of course, but it’s an interesting possibility for a full game.

06
Feb
14

My newest victim: Pinball

My non-Mostly Tigerproof work is coming to a close, and I’m back to prototyping weird ideas again. This time the theme is pinball.

I’ve always loved pinball. During the 50-ish years between the advent of flippers and coin-op pinball’s commercial collapse, it has become a well-tuned and richly elaborated class of games, so it might not be obvious why I’d choose it as something to try to improve upon. In spite of how much refinement it’s seen, I believe the game still has glaring problems.

I play vastly more video pinball than real pinball. I grew up on video pinball, as did nearly everyone younger than me. In some ways pinball is poorly adapted to what is now an overwhelmingly software-based existence:outlane

  • It’s fundamentally portrait in a landscape world. I’m looking for ways to make better use of wide screens.
  • There’s no consensus on what the role of nudging should be. Is it cheating? Is it essential, because you have no other defence against the outlanes?
  • Nudging is usually poorly implemented in video pinball, due to its partial legitimacy. If nudging is part of the game, it needs better feedback: on-screen counters of how many nudges I have left before a tilt, hints about how far the ball will be nudged, maybe even a nudge training table. If nudging isn’t part of the game, the game needs redesigned so it won’t be missed.
  • And speaking of outlanes, they’re shitty design. They prevent good players from playing indefinitely (a particular worry in coin-op), but they do it through random instant death. There have been a couple of attempts to replace them with timers (Goin’ Nuts, Safecracker), but hitting a time limit almost feels even cheaper than getting an unlucky bounce. Luckily there’s no shortage of ways to make a game hard.
  • Pinball tables don’t do a good job of communicating goals during play, and the goals are arbitrary without much internal logic to them. Flashing lights and voice prompts are very helpful, but personally there’s so much unexplained stuff I wind up reading the manual. Reading the manual is a chore though. It’s a chore that recurs on every table, which might be unnecessary. Could there be a system of goals shared between a family of tables?

I think pinball’s most fundamental drawback is its uneven learning curve combined with its heritage as a game of chance. The challenge in pinball is directing the ball to where you want it to go. Catching the ball in the crook of the flipper is easily learned, but it takes precise timing to shoot at the angle you intend. A pinball will roll off a flipper in a second. During that second, the resulting angle of the shot varies by 60 degrees or more. What’s worse is that most of that variation is compressed towards the tip end. Each frame matters.

It’s wonderful that pinball rewards such high levels of finesse, but it’s hateful that even after hours of practice, beginners find their performance is dominated by random chance. Even when they do achieve things, it’s hard to take pride in it with the knowledge that flukes outnumber intentional shots. I think pinball should do a much better job of reflecting the player’s intent, even if their timing isn’t dead on. I’d love to bring the experience of being good at pinball to a wider audience, while giving old hands even greater challenges.

Those are my high-falutin’ design goals. More on my specific approach in the next post.

21
Apr
13

Kindness Coins

A wise person once said, “Women aren’t vending machines you put kindness coins into until sex falls out.”

You Know What’s Gross? We Often Play Nice Guys™ In Games With Romance Options by Kim Moss

 

“So what do you get out of the kindness coin vending machine?”

“More kindness, I expect.”

“Sounds inflationary.”

 

“Spending kindness coins willy-nilly is irresponsible. A responsible adult saves up their kindness coins and keeps them in the kindness bank, so that they can buy into a kindness mutual fund so that they have kindness income for their retirement.”

“What does that even mean?”

“What I’m trying to say is, you should be a very mean person.”

 

Today the European Kindness Central Bank announced that kindness inflation across the EU is well above target rates and issued a recommendation that member states institute kindness price controls. President Hollande of France gave a statement calling instead for a weakening of kindness, in order to help European kindness exporters that have been rendered uncompetitive by the strong kindness. Meanwhile, the US kindness treasury has blasted the Chinese government, accusing it of exchange rate manipulation, arguing that Chinese kindness is grossly undervalued.

26
Feb
12

Leaving PikPok

I quit PikPok this week. I’ve been at Sidhe since mid-2006, and working in the PikPok mobile label since the start of 2010. I’ve met some startlingly talented individuals there and it’s a shop with great prospects, but it’s time for a change. I’m quitting to work full time on my own projects – I want a train-wreck I can call my own.

When I’ve got something ready for public consumption, I’ll announce it here.

23
Jan
12

Analysis of Swift*Stitch pricing experiments

Sophie Houlden ran an interesting experiment with the pricing of her game, Swift*Stitch. Each day for a week she picked a new price for the game. Sometimes her prices were higher, sometimes they were lower, and she would ostensibly decide the new price based on a whim.

Demand Curve

There’s probably a more scientifically rigorous way to map out a demand curve. Sophie’s graphs are in chronological order, and they show an upward trend over time, so I don’t want to draw too much of a conclusion without being able to control for publicity. I’d love to see the graph for conversion rate over price. But it’s still really interesting data. The results from the pay-what-you-want sales tell you what people want to pay, but this tells you what they will pay.

The values are marked with blue markers. The red line is the number of sales you’d need to make a constant amount of revenue (the mean daily revenue for the week). In other words, the red line is what we’d predict if pricing had no effect on your profitability whatsoever.

Here’s a graph of total revenue for each price point, with a log scale for price, because $77 is a huge outlier!

I also did the dweeby thing and tried to fit a price elasticity of demand coefficient to it. If it’s as low as -1.0, (which is total revenue staying the same despite price changes) then video game consumers are as price sensitive as people buying soft drinks. If it’s as low as -1.5, then video game consumers are as price sensitive as people buying air tickets for overseas holidays.




Follow

Get every new post delivered to your Inbox.

Join 56 other followers