WordPress not displaying images

Ok, so I don’t very often get to grumble about WordPress as it’s a fine bit of software that saves a ton of time.
But I recently found that following an update to Jetpack images failed to display.
I tried a ton of stuff and found that flicking a switch in the Jetpack settings helped. No idea why. Hope it helps some other poor sod in the same predicament.

Kyle Comet and the Toxic Laboratory

A quick update to say that a new game is on the Apple iOS AppStore.
Kyle Comet is a young space hero that I once wrote a story about and self published. You can find it on Amazon here. (https://www.amazon.co.uk/Secret-Planet-X-Mark-Wilcox/dp/1326413090)

I always wanted to create a series of games featuring a young space cadet type hero.

The premise of the game is pretty straight forward; shoot, jump and collect the goodies. I guess it’s an endless runner in that there is no structure to the game other than throwing obstacles down in front of you as you run.

This is deliberate. Akari took a lot of work in developing the level structures and writing the tools to craft all of that. I wanted a break from that style of development.

Jetpack Joyride provided a little inspiration for Kyle. It’s a game I’d played and enjoyed for some time. Even down to the cute and cartoony visuals. But my visual style is more of a pixel art style.

With The Toxic Laboratory I wanted every element to be fun.

The jump > shoot dynamic was something I’d used before and enjoyed. It allows for the game being operated with a single tap to the screen. As you tap the character jumps and shoots simultaneously. The first tap is a tiny jump but if you follow it up quickly with a second tap the character effectively takes off.

Having mastered that dynamic I drew a jetpack onto the character’s back and added smoke puffs to help illustrate the action.

Once Kyle’s character is off the ground you can ‘fly him’ for quite a stretch. Which is pretty cool as there’s plenty of floating goodies to collect.

A follow up to The Toxic Laboratory is in development just now; Kyle Comet and the Lost Moon. The Lost Moon adds platforms and more of a platformer mentality to the action.

Kyle Comet and the Toxic Laboratory is available now on the iOS AppStore.

 

Akari Demo v0.1.25 video

I wanted to look at a new style for the title screen and ‘death intermissions’. Ultimately this style has been rejected but it’s always worth sharing them for posterity!

Staying true to the golden days of the videogame arcade in modern mobile gaming

If you were a kid in the late 1970s and early 1980s you’ll no doubt remember the wonderyears of the videogame arcades. The thrills of the new technology that provided hours of fun for us young gamer geeks was mesmerising.

These were the Star Wars years. Science fiction had finally become mainstream and was in the mind of every kid. To be able to visit the arcades and drop a coin to blast everything to hell was the ultimate thrill. We were all Luke Skywalker and Han Solo.

But what was it about those days, the games and their magic that endures and why have we built our business around maintaining the ethos of those early, pioneering days in gaming?

Nostalgia?

This isn’t nostalgia. That’s important. Nostalgia is a fine thing but for us it’s much, much more than that.

Sure there’s a buzz in reliving and recreating the game thrills of our youth. There’s always an inevitable thrill in regressing as you get older. But the key thing here is that there are aspects to ‘retro’ gaming that are entirely relevant to the modern mobile gamer. Not least the ability to be able to pick up a game, have a ‘go’, succeed or fail and then put the game down in the knowledge that next time you pick it up the same challenges will be presented to you without the added blag of being repeatedly sold to.

Better yet you can be sure to test yourself against your (and your friends) past achievements via such mechanics as a high score table or achievements matrix.

It is indeed a decidedly retro thing. There’s a charm to it that has been somewhat eroded over generations of advancing technology. The limitations of a colour palette and small screen resolution forced some ingenious design decisions and pushed the artist in particular, into creating some wonderful effects.

Retro for us is Defender but it’s also Out Run or even Doom. Retro for you may be more relatively recent titles such as Grand Theft Auto 3. It matters not. The point is that there was a charm in the ingenuity of designing within limitations be they graphical or processor.

Mobile devices are phenomenally powerful in terms of their graphical capability and raw horsepower, but they come with their own challenges for designers in terms of their physical size and limited control options. This, for us, is hugely attractive as designers and artists.

We want to try and map aspects of the classic arcade game experience onto modern mobile gaming.

Annoyances

The modern game scene is driven by the desire to sell once and sell again actually within the game experience. We don’t much like this trend. Not necessarily because it wasn’t prevalent in the ‘golden days’ (you can be sure that if it was possible back then it would have been done) but because it’s a distraction from the thrill of the game.

Monetising your games is important from a business sense but ramming it down your audience’s throat is ugly and unattractive. If there’s one thing that annoys us as gamers it’s sitting down to enjoy a game only to be presented with a full screen advert and a tiny (X) to close and progress. For us it then becomes less about you the gamer and more about ‘we’ the business trying to earn a buck.

If there’s another thing that annoys us it’s not being able to get into a game without the tiresome ‘this is how you play the game’. You’ve seen it before, you click PLAY and then you have 5 minutes of a greyed screen with highlighted pointers for how you actually play the damned thing.

Then, if all of that isn’t bad enough, you’re playing your game in the company of a 1/5th screen height persistent advert.

It’s ugly, intrusive and not at all what we want as gamers. As gamers we want to play. Pure and simple. We have our game and we want to play it and use our own intelligence and intuition to get us through.

Identifying these things was key to establishing our plan, or promise, if you like.

Our promise

So our ethos, our promise to the gamer, is that you will pay once for the game (£0.99, for example) and then play without any interference as many times as you like.

In the first two weeks of release we’ll likely offer the game free of charge. Following that initial free period we’ll charge a small fee for the game. We’re not Sega or Namco so won’t be asking for the usual £10.99 to recoup the enormous associated costs of development and marketing.

Staying true to the arcade ethos

True arcade games should not be so complicated as to require lengthy tutorial stages.

Many mobile games are of course fairly complex and warrant a tutorial of some kind. But even then it’s not as though you’re paying to play each time and have somebody breathing down your neck waiting for you to finish. Just wade in and figure it out! I personally often think that tutorials in games are a waste of dev effort and more a product of the heavy-handed marketing department who’ve seen such things in the competition.

“They do it so we should do it!”

It’s nonsense.

Most arcade games had an ‘attract mode’. It was a cut away from the title screen that offered a brief look at the game in action. Attract mode was designed to pull you in and have you spend your hard earned 10p. The cartoonist in me often imagines rows of agitated and excited arcade cabinets beeping, flashing and bouncing to get your attention :)

In many respects the iOS App Store is like a videogame arcade. You’re generally looking for a game to spend your gamer budget on (take a chance on). If the game is free to download there’s no risk, you’re not taking much of a chance!

Screenshots and ratings go a long way to attracting you. Ratings is not too dissimilar to word of mouth. If there was enough positive buzz about a game you’d hear it either amongst your friends or in passing whilst you wander the arcade. If there’s plenty of people stood around the cabinet you can be sure there’s something attractive on offer.

Similarly, if a game has merit you’d read about it on social media, gaming websites or hear about it amongst your gamer peers.

Sifting through the negative feedback and filtering out the ‘it crashes on my phone’ comments should leave you with enough information to persuade your purchase.

Marketing your games is vital and something for a future post. But for now let’s assume you can generate a healthy enough audience for your game on the app stores.

Attract mode translates into the preview video. Gamers are keen to see the game in motion before they commit. Both the iOS and Google stores offer a video preview. This is our opportunity to attract gamers based on the actual game. Flashy, over produced videos that show little or nothing of the game fail here in an instant. Rule 1: show the game in action! Show the promise to the gamer.

Genres and development challenge

We tend toward shoot em ups. It’s just our thing. We loved them all from Space Invaders and Defender through to Raiden, Outzone and Ikaruga. But we’re by no means limited to that genre. The key for us is in the visual style that we can achieve. The graphical potential of a game is a huge draw for us. If we can see a sizeable challenge in the code and art the project will often gain enough momentum to move into development.

The best projects are built on top of a number of key challenges.

From the developer’s perspective it may boil down to the tools that need to be created to build game specific levels. Our current project, Akari, started out as a scrolling shooter that quickly evolved into something that required staging and good level design. Our in-house level editor Neo was adapted to construct such challenges.

The artists and developers work closely to translate design goals into game features.

The time between developments is fun. We enjoy pulling together game concepts, graphical ideas and any other ideas for making a cool mobile game experience. But we never lose sight of our ‘promise’ – that our games will be all about instant accessibility and fast-paced thrills.

We also want to provide a consistent and level playing field. This is why we reject in-app purchases. Mechanics like that immediately offer an uneven playing field.

Social media

Embracing social media is almost essential in succeeding in modern mobile gaming. Testing yourself against your friends and then sharing those achievements on Facebook, Twitter et al is an increasingly important aspect to the game experience.

We’re keen to explore this without intrusion and are looking to integrate Apple’s Game Center and Google’s Play Games in all future games, for example.

It was always a thrill back in the day to visit the arcade and stand in front of your favourite game to see if your score was still top of the tree. Heaven forbid you should be displaced. Nothing would motivate you more than to see somebody else’s 3 character moniker sitting proud above you.

It was actually pretty frustrating to see an unfamiliar moniker sitting immediately above you. We’re convinced that challenges between friends is the way forward. We all want to brag our achievements to those buddies we know we can communicate with.

Conclusion

Modern mobile gaming is hugely enjoyable. The games are staggeringly attractive and full of style. Despite game companies insisting that mobile games are much more than ‘casual’ we feel that actually this is exactly what they are.

To that end, for us, the best games offer instant action and a great challenge with the ability to replay to your heart’s content without ever being pulled away from the game experience.

The golden years of arcade gaming perfected the art of offering such experiences which makes classic arcade gaming entirely relevant to the modern mobile gamer.

 

Development build 0.1.17 of Akari

Here is a short video run through of our game Akari. Akari was only ever a working title but we’ve since warmed to it a great deal. So it’s stuck! All game elements are in place. Much of the remainder of the work is in artwork, level design and exploring indexedDB for saving progress and scores.


Akari – short play demo video

Akari is a game that we’re currently thrilled to be developing here at Space Monster Games. It takes its lead from classic early 1990s shoot em ups such as Raiden and Outzone. Though the visual style is developing nicely we’re still hard at work creating some cool graphics and effects to keep you entertained for many, many levels.

More about the young hero of the game, Akari, and her backstory will follow in future posts. We hope you enjoy the video.

Friday mobile game concepts

Friday is a cool day. We put Sublime Text to one side and break out the pen and paper to craft some concepts.

Here’s a couple.

Underwater Blob Thing – in search of food our plucky bubble fish type thing must avoid spikes and other sharp things.

Affectionately referred to as PacMaze – the flappy blob thing must swing left and right to avoid the maze walls and collect power pills whilst avoiding spitting ghost things.

Building a level editor for a shoot em up – JSON issue

We have a number of in-house tools written through a combination of Javascript and PHP. The data from the editors is written to a MySQL database and much of the workflow is handled within a single page – i.e. AJAX requests firing off to the back end to retrieve and update data.

Something that we hurl around a fair bit is JSON.

Currently the focus is on building an interface for designing levels for our forthcoming shoot ’em up; Akari: Battle Star.

What we’re after is precision. That is, we want to place entities within the game to be triggered at specific times during the game’s progress.

We call this tool Neo.

The Neo data is stored in a database table that is pretty straight forward in its design.

Within the editor we select the game and level to work on and an AJAX request pulls the data from the database. The result of which is a PHP array.

We then encode the array into a JSON format via PHP’s json_encode() method. This presents us with the Javascript that we can then use to write the front end.

Manipulating the JSON within the Neo front end is straight forward and we use jQuery for much of this.

Once we’re happy with the data we then fire off another AJAX call to post the data to the back end. This is were we ran into problems.

In short we were struggling to decode the JSON into a PHP array.

The JSON format we pass in looks something like this:

    {"gameid":1,"level":1,"trigger":100,"entityType":"formation",alienRow:1}

There’s much more to the data than that but essentially this is the format. The trigger value is the stage of the game (in ticks) at which point the entity data is triggered.

When we attempt to decode this JSON string and form the PHP array it’s successful.

But when we add another object to the string, it fails.

Something like this:

    {"gameid":1,"level":1,"trigger":100,"entityType":"formation",alienRow:1},
    {"gameid":1,"level":1,"trigger":150,"entityType":"island",alienRow:0}

We couldn’t for the life of us figure out why this wouldn’t work. So we employed PHP’s json_last_error() method which captures the last attempt at decoding JSON.

    json_decode($string);

    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - No errors';
        break;
        case JSON_ERROR_DEPTH:
            echo ' - Maximum stack depth exceeded';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Underflow or the modes mismatch';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Unexpected control character found';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Syntax error, malformed JSON';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
        break;
        default:
            echo ' - Unknown error';
        break;
    }

We received the error

 - Syntax error, malformed JSON

Some of you seasoned eagle-eyed Javascript gurus will have already noticed the problem.

We were trying to construct a Javascript array by formatting it badly.

The JSON we should have been passing looks something like this:

    {"data":[{"gameid":1,"level":1,"trigger":100,"entityType":"formation",alienRow:1},
    {"gameid":1,"level":1,"trigger":150,"entityType":"island",alienRow:0}]}

Once we’d defined the Javascript properly in an array format the decoding worked.

Neo development is now moving forward at pace and we’re having a huge amount of fun designing the levels and graphics.

 

 

Defining alien attack formations in a retro shoot em up

In our last game, Thundergun, we adopted a purely randomised approach to generating the levels. That is, the alien formations were predefined prior to the game loading but their formations for completely random.

For our next game, Akari: Battlestar (working title), we’re looking to plan the action with far more precision.

Our inspiration for this game is from the early 1990’s and games like Raiden.

Raiden was a tough game. Very tough. Our game will hopefully be a little more forgiving in the style of what were once referred to as manic shootersDo Don Pachi epitomised this style in which you pitched your fighter against hordes of formation-based adversaries who sprayed bombs (with some elegance) around the screen. Under normal circumstances avoiding the bombs would be nigh on impossible. But this genre used much tighter collision detection; often using just a single pixel in the centre of the player’s ship for collision reference.

We’ve already adopted a similar approach.

But it’s the fighter formations we’re keen to establish up front by way of an in-house level design system. The placement of aliens, cannons, collectables, mini bosses, tanks; you name it, will be handled by this system. Each entity will have all attributes defined and the resulting output stored in a JSON format to be read by the game.

The attack formations for Thundergun were based largely on Capcom’s 1943.

Fighters swooped in, curled around and then flew off. If you took the entire formation down you were presented with a bonus item.

For Akari we want to have a lot more variation.

Fighters will adopt one of several attack formations.
e.g.

  • Drift down from the top of the screen, pause, fire, drift off to the side
  • Drift in from the side, fire bursts, drift off to the side
  • (Tanks) trundle in from the side and follow a set path
  • Squadron formations from the bottom of the screen that fly off screen and return in slow formation

For Thundergun we introduced the concept of a game progress ticker. In code this was defined as part of the global namespace g{} and referred to as g.progress

g.progress bumps with every tick of the game’s main loop. This is consistent and in tune with everything else that the game loop handles (movement, animation, collision etc) so it’s a good base for defining the introduction of alien formations.

As g.progress counts its way through to several thousands for each level it passes what we refer to as waypoints. As each waypoint is triggered a new randomly but predefined alien formation is spawned.

The difference with Akari is that there will be no randomisation. Everything will be delivered from a level data file.

At set intervals in Thundergun the action was interspersed with a mini boss; a larger fighter that drifted into view and bullied the player. Formations continued to spawn around it.

For Akari we’ll suppress the formations and halt the bumping of g.progress while the mini boss action plays out.

With the mechanics for the mini boss developed we have pretty much 90% of the code written to handle a proper end-of-level boss. The main difference will be in defining the scale of the boss and any sub-elements such as wing-mounted cannons.

Level structuring isn’t a new thing for us. We’ve employed it for our platform games and the C64 style shooter Crossfire.

Hopefully we can get a demo up and running in the near future. Exciting times in arcade game development!

%d bloggers like this: