high speed block avoidance

a futuristic highscore attack racing game


your goal is to get as many points as possible, by making risky moves and surviving as long as you can


devlog

keox is now out on Android

image


it took a while, but keox is now out on Google Play!

https://play.google.com/store/apps/details?id=com.stefankernjak.keox

I don’t have that much experience with Android (and devices). But as long as your GPU supports Vertex Texture Fetch, it should work (I also added an option to lower the internal resolution, if the game isn’t keeping the 60 fps on your device).

what a difference just a few artisanal shader make

image
image

keox is now out on iOS

image


Hey there, once again it’s been a while. But…

…you can now buy the game on the App Store!


Changes

Before the release I also made some changes to the game

  • removed TouchKit for touch input and replaced it with Unity UI. To get the input data I replaced the replaced the previous script and added IBeginDragHandler, IDragHandler, IEndDragHandler,
    IPointerDownHandler, IPointerUpHandler
  • triggering the bonus sound too quickly caused weird audio, so now the rate is limited
  • added a share button with Everyplay, so people can now easily share their scores and replays with everyone


Past Events

Since the last post I showed my game at a bunch of local events

Vienna Gamedev Meetup #14
Austrian Games Night 2016
Radius Festival Vienna 2016

The feedback, especially on the graphics, was always really great and some people really got into it :D


Upcoming Events

If you’re in Graz, keox will also be at

Game Dev Days Graz 2016

February 28 Update

image

Hey there, it’s been a while. In November I started working fulltime as a web front-end developer, which has seriously cut into the time awailable for keox.

But there is good news (and some progress).


track now works correctly on iPhone 6S and 6S Plus

Over christmas I got a new phone and therefore was finally able to properly debug the problem. After checking and modifying the shaders in XCode, I figured out that the newest iPhones just don’t like 2 pixel wide textures. Sampling them returns either 0.0 or random Garbage, depending on the color channel. Which is kinda weird and I couldn’t find any mentions of this online.\

To fix this, on those devices, the texture is now 4 pixels wide.

As an aside, you might ask yourself what 2 pixel wide textures could possibly be useful for. Well, data. This one is storing track x and y, rotation and a random value for more interesting landscapes/enviroments.


GameCenter

During one of the later Unity3d releases the GameCenter function, which gets you the display names of users, stopped working. And again I couldn’t find any mentions of this problem online (I guess most people don’t use the build in stuff or don’t do custom leaderboards or don’t need display names ¯\_(ツ)_/¯). So I filed a bug report and in the recent patch release it got fixed (as far as I can gather from the changelog there was a problem with network deadlocks or something).


finished track, camera, ui update

The new system is working properly now (as far as I can tell). Track smoothing is back on (except when the angle is going from 360° to 0°). A similar bug was also causing the track to jump wildly around.


difficulty

After showing the game to a few people, it was pretty clear, that the difficulty I find interesting, isn’t really playable for most people. So the amount of blocks in the beginnig (and on average) is now lower. Additionally there probably will be a limit on the number of randomly spawned blocks for each chunk of the track.


Release

Since the game now runs properly now on the latest iPhones, all GameCenter things works again and the track rewrite is complete, the plan now is to release the game within the next month (or two). So I’ll try to be more active on social media, in the hopes of getting some buzz going.

So, yeah, let’s see how that works out (and hopefully there wont be another 4 months between updates).

October 25 Update

Since the last update I’ve been going down a serious rabbit hole, just trying to get one simple thing working…

image

It started when I decided to implement a track challenge similar to an aileron roll/full loop. I send the shader the angle values and it looked like a very jerky, broken staircase and not like a smooth loop. Previously I computed the rotation sine and cosine on the CPU and the shader unpacked and applied the data. But, since I’m sending the sine and cosine in two bytes, the resolution was pretty limited, which led to the ugly steps.

So I started to just store the angle in a single byte and computed the sine and cosine on the GPU. But, once again, there wasn’t enough resolution. So for now the angle get’s stored in two bytes (one holds 0 - negative Pi and the other one 0 to positive Pi). Once I had also updated all the shaders that read the track curve data (I think I actually managed to even remove a few texture lookups in the vertex shader :D), the next problem came up. 

Pretty much all the code that uses the the track curve to position things (ui, bike, camera etc.) wasn’t set up to deal with the new track orientations, turns out you can cheat quite a bit if everything just has to kinda point up. So I had to redo another large chunk of code to get that working (some things were/are still kinda sensitive to quick track curve changes). 

After the game was once again, more or less, working, I wanted a system to trigger/execute in some predetermined fashion different track curve types and quicker, additive track curve challenges. Which took quite a long time, but

  • now there are several managers in place that divide the responsibilities to get that working (along with a bunch of xml serialization tags and corresponding classes)
  • adding new track curve types and challenges should be pretty easy and only requires changing single files
  • the track curve sequence can be controlled by xml documents 
image

After that, the next thing needed to actually be able to play the game properly once more, was the camera. It worked for the most part, but the position smoothing and rapid changes in the track layout (mostly due to bugs in the track curve code, but the bike should still be visible at all times) lead to the camera to places, where the bike isn’t necessarily always visible (that sometimes happened even before that). 

So right now I’m finishing up a game camera rewrite. It’s based on the Procedural Cinematography in Homeworld Shipbreakers. Right now it supports the hard and soft boundaries, setting minimum, goal and maximum distance, setting the view angle  and keeping the camera above the track. 

After that I’ll fix any remaining bugs in the track curve system and add a few more track curves (besides straight, straight_wobble and loop) and track curve challenges (quick twist). 

Beta signups are open

image

If you want to help with the development of keox and own an iOS device you can sign up for the beta here

It just might take a bit for the beta to be accepted into TestFlight.