PowerPack status

Gadgets

I ordered mugs…

powerpack mugs

T-shirts…

powerpack tshirts

Posters, stickers, bookmarks…

powerpack stickers posters

I’ve sent packages to all people with those goodies.

powerpack_goodies

They actually received them :) And this point of crowdfunding is completed.

Ula tshirt
 

Game

But it’s not that pink when it comes to game. Some things are finished, some are work in progress, some are almost not started. Basically the completion status looks like this:

  • added all player words and 100 of mine – 110%
  • flavours in dino behaviour (kamikadze and knight) – 100%

  • ninja equipment (spiders, flash bomb, knives) – 35%
  • WPM counting – 100%
  • setting to change word maturity level – 95%
  • before junctions, showing the path on which player is walking – 25%
  • over time graphical statistics of accuracy, WPM etc. – 5%
  • new powerup (dynamite) – 73%
  • new dinosaur (Archeopteryx) – 60%
  • new level – 3%
  • new boss Quetzalcoatl at end of new level – 2%

level6 menu

  • fixed few bugs, polished few things (ie. in-game captions)
  • created tool (Uuk) for easier managing of the list of words

 
While designing PowerPack crowdfunding compaign in november/december, I thought it’s possible to finish the game in janury/february… but due to a lot of additional tasks, projects, “life things”, and a lot of time spent printing and sending the gadgets, the real work was delayed. Now it seems PowerPack will be finished in may. End of may.

To make up for that, I will give PowerPack supporters better version, with features implemented for Pixel Heaven:

  • new cool Ninja Cat look and animations

new ninja cat

  • blood stains on screen when player damaged
  • funky border when in fullscreen
  • vignette when in water, in underground, on some levels color shifting
  • cat in main menu blinks ;)
  • better music quality

 
They are already implemented. Version with all of that and more, most likely will be be sold digitally. PowerPack supporters get that as a “bonus”.

Leave a comment

Ninja Cat social additions

Recently I’ve been very busy with making a “social version” of Ninja Cat for Sense Lang. Sense Lang is a typing portal, teaching people how to type faster. They have also typing games, and we cooperate for a long time now, ie. you can play special version of Ninja Cat there.

Base additions

First, there is a option to login using social portal (currently Facebook and Twitter) – directly inside game. Thanks to that, you can see your picture next to health bar, and be able to save scores to highscore ladder… which is also displayed directly inside game. This is rather unique feature. You can check it out right now.

social_login

Challenges

I also spent about 4 weeks making special version with challenges. Challenges work like this: you select a level and your friend, you play the game, then your score is sent in a invitation to your friend, who can play the same level and try to beat your score. You are informed whether he did it or not.

That’s pretty cool feature, we predict it can add a lot of fun to game. It will be released in few days also on Sense Lang… and whole internet. That’s because everything is done inside .swf, so it can go viral wherever it want, all the services willl work. I will tweet about it, when it’s available for everyone.

Here are some screenshots. First – your profile with a history of challenges, so you can check stats and results.

social_profile
 

That’s what happens when you have ambitious friends…

social_challenged
 

During game you can see player faces, and progress bar indicating how many points do you need, to beat your friend.

social_game
 

This is a screen where you choose friend from a social portal to a challenge.

challenge_screen

As you can see, that’s a lot of new user interface controls. The task consisted mostly of making a lot GUI inside game… which in case of Ninja Cat was pretty tiring, because GUI here is very badly designed, basically hack on hack ;) Other than that, I was using REST service created by Sense Lang, for the login, ladders and social portal integration.

Leave a comment

Uuk – word managing tool for Ninja Cat PowerPack

Since sunday I’ve been working on a tool to help me in managing the files with list of words… because I’ve made another change for PowerPack, that is – introduced maturity levels. I called the tool Uuk, which is a name of organgutan librarian in Discworld. Yesterday Uuk reached level at which it can be shown outside, and so I made short video presenting it. Tadam!

It’s a AIR application, which uses minimalcomps for UI. I was timing the implementation, so I know it took me exactly 14h and 23 minutes to make it at this stage.

Why I needed such tool is briefly explained and demonstrated at beginning of above video. Btw, sorry for the bad quality… currently I’d rather work on PowerPack than spend even 3 hours making polished video.

What Uuk allows me to do:
+ easy filter/search for words, in all maturity levels (or a combination of them)
+ add, edit and remove words
+ quickly move words between maturity levels
+ is operated using mouse and keyboard shortcuts
+ autosave of changed words
+ log of changes during program run

What is left to code:
- “show exactly this word” (currently every word search is implicitely *wildcard*)
- case sensitive filtering
- search for duplicates
- full changelog appended to file
- tag support
- multiple languages support (target for future polish version of Ninja Cat)

Except the last two points, all should be quick and easy additions.

Leave a comment

KrakJam 2014

For me, end of January is intrinsically connected with Global Game Jam initiative. First I was organising KrakJam’s (local edition of ggj), but after 2 editions I had enough and Maciek Siwek, friend from Shader (student’s organisation of gamedev) took it over. Because of that I was able to start participating, and this year I also had to take part.

Overall that was my 5th KrakJam, and 3rd in which I jammed. The event took place at Krakowski Park Technologiczny, and broke record of the most participants ever: (around, I don’t have official number) 55.

kj2014_all

ja_mariusz_final

I was again in two man team with pro graphic artist Mariusz Siergiejew, and as “Pixel Twisters” we did another nice game in flash. You can play it here:

merge-splitter-intro-transition

Instruction how to play can be heard in game, but it’s a little unclear so I paste it here as well:

The game is about balancing the amount of news you believe in TV. Too much means you become naive, too little and you become conspiracy theorist.

Let’s move to game – you are the mason’s triangle. You jump from news to news by pointing with the mouse cursor and pressing left mouse key. Your task is to balance the number and size of news on the screen. It can’t be too much or too little.

merge-splitter-1

You can see how well are you doing by the indicators on the right – they should stay near green zone. Click at the news on which your triangle is staying and it will be broken into two, which will start shrinking. Press right mouse key pointing another news – you’ll merge it with the one on which you’re staying, and the newly merged news will start expanding. On the other hand, moving from news to news makes the previous one start shrinking.

The TV news broadcast lasts for 20 minutes – you can see the number on screen. Stay alive that long and you’ll win the game :) By this you’ll also become aware how much time you waste by watching TV.

merge-splitter-2

By pressing button in the top right of TV set, you can look behind the scenes of TV news preparation. There reaction time flows much slower, but the TV time flows much faster. Also, you can use only the one special power (merge or split) which you have used the most in the standard mode. Press F2 or F11 for fullscreen… and good luck!

One last thing: before KrakJam I made a 25 minute lecture with lots of tips about the “jamming process”. You can see the prezi slides here (mixture of polish and english) and the whole presentation (without first 2 minutes, in polish) watch here on YouTube.

It was very nice event, even if a little tiring :) I can’t wait for next jams.

Leave a comment

Keyboard shortcuts info in debug builds – IMGUI style

I want to share a little discovery, a trick easing the creation and development of games. First a short motivational and historical introduction.

Case study

I don’t know if you have it too, but when I’m creating a game, I often add to it a lot of keyboard shortcuts – even a few dozens. Player avatar, enemies, map, camera, physics, rules etc. Shortcuts use normal letters, digits, F keys, special keys (tab, home, backspace), and their combinations with ctrl, shift, alt. Sometimes it’s hard to figure out what is available and what does what.

Especially I had problem with that in Ninja Cat, where shortcut availability depended on compilation mode (CONFIG:: variables, you can treat them like #defines) – debug+editor had all of them, debug without editor had a part of that, editor without debug had yet another part etc. It was very useful, because sometimes having too much shortcuts and special keys was bad – ie. during testing, when pressing some keys would change gameplay.

But I didn’t want to have it as binary – either all, or none. Sometimes the ability to intervene meant beaing able to catch a bug on the hot spot (perhaps Heisenbug?), and do something about it. So it was nice having it at such a granular level (debug/release, editor, deploy, profile). The disadvantage was that often I forgot what the actual shortctus were, what could I do at this moment. I was pressing shortcuts and they didn’t work, or I was forgeting about some magic functionality, hidden in not so visible code places.

Solution

Ok, now I’ll explain how to fix this situation. The easiest is to just display a list of all shortcuts, upon pressing some key like F1 or H(elp). But nobody would be able to create such list and maintain it over time. Also, having one huge list of shortcuts when you have only let’s say, a third of them, is not that really helpful. The solution? Do it in a automated way.

I’ve discovered something similiar to Immediate Mode GUI (https://mollyrocket.com/861 , interesting part starts at 0:50) – shortcut informations are gathered during game loop. If a piece of code has a shortcut and it’s available – add info about it to string. At end of frame, display that string on screen. Voila! How to do it in practice you ask?

This is a typical code with shortcuts:


// class Enemies, function Update():

if (CONFIG::debug)
{
        if (FlxG.keys.SHIFT && FlxG.keys.justPressed("D"))
        {
                // kill all enemies
                for each ( var enemy : Enemy in members)
                {
                        if (enemy.alive && enemy.exists)
                                enemy.baloon.TypedEverything();
                }
        }
}

Simple and obvious. Now let’s add something:

if (CONFIG::debug)
{

        if (Game.info_keyboard_shortcuts_show)
        {
                Game.info_keyboard_shortcuts_list += "SHIFT+D = kill all enemies\n";
        }

        if (FlxG.keys.SHIFT && FlxG.keys.justPressed("D"))
        ...
        // code from above
}

// in singleton Game:
public static var info_keyboard_shortcuts_show : Boolean = false;
public static var info_keyboard_shortcuts_list : String;

Because the code is in if corresponding to compilation mode, its body will be executed only in that one specific mode. In this way, only the available shortcuts will be added to string and displayed.

Implementing the rest is trivial:

// once a frame call this function which checks whether you want to see the shortcuts list.
// In such a case, display the list, collected in a simple string over the course of a frame

static public function ShowKeyboardShortcuts():void
{
    info_keyboard_shortcuts_show = FlxG.keys.pressed("H");

    if (info_keyboard_shortcuts_show)
    {
         var shortcuts_list : FlxText = new FlxText(200, 10, 350, info_keyboard_shortcuts_list);
         shortcuts_list.shadow = 0x000001;
         shortcuts_list.draw();

         info_keyboard_shortcuts_list = "";
    }
}

That’s how it looks in practice:

The text is displayed after holding H. So far I’ve added only few shortcuts.

Additions

1. The compilation modes can be combined, as well as mixed with runtime modes, ie.

if (CONFIG::debug && CONFIG::profile &&
    Game.is_profiling_state && Camera.is_some_other_state)
{
      // some very specific shortcut
}

2. My friend Krzysiek K, has suggested on Warsztat’s forum (where I posted first about this technique; warning: polish language), how to make it even faster and less verbose. This:

if (CONFIG::debug)
{
        if (Game.info_keyboard_shortcuts_show)
        {
                Game.info_keyboard_shortcuts_list += "SHIFT+D = kill all enemies\n";
        }

        if (FlxG.keys.SHIFT && FlxG.keys.justPressed("D"))
        ...
}

should be quite easy to reduce to:

IF_DEBUG_KEY( SHIFT+'D', "kill all enemies" )
{
   ... code ...
}

Where IF_DEBUG_KEY does everything inside: testing compilation mode, checking whether to display shortcut info, testing whether such key combination is pressed, removing code in release build.

Summary

Little work, simple and flexible code, works everywhere (language agnostic), fixes specific problem. Maintainibility is high, because code handling the shortcuts is just next to the code displaying shortcut info. I recommend to use it to your bag of tricks / current game :)

Leave a comment

Crowdfunding Success!

Yesterday at midnight the Ninja Cat and Zombie Dinosaurs PowerPack project has finished with whooping 130% funding rate from 50 people, collecting almost 3k zlotys! How is this possible, in spite of its problems at beginning?

One of the facts was that the CD Action, biggest polish player magazine, has backed PowerPack and became patron of the game.

The second thing is that the material status has changed, and extension won’t be available online f2p for everyone. At beginning it was meant to be like that, then I changed it for a one month exlusivity period, finally it became forever. So supporting project on wspieram.to was the only chance to get and play PowerPack, which made supporting the project much more sensible option. In the future most likely I’ll be selling the game through digital distribution, but the price is unknown, and for sure there won’t be so many nice bonuses.

Agata the Ninja Cat

There was also an awful lot of promotion. Really, almost all big polish internet game portals have written very positive news about PowerPack crowdfunding; some even few times. Also Krzysztof Gonciarz, PowerPack ambassador has helped a lot. Thanks goes also to wspieram.to for their huge help, and Artifex Mundi for giving out games in combination with mine.

I’ll be preparing a postmortem from this project, because I made many errors and have learned a LOT. Now, I’m finally back to developer work, and in the meantime will be printing the gadgets and sending them to backers.

2 Comments

Ninja Cat PowerPack

EDIT: long story short, here’s epic video which explains everything about game, PowerPack and life. What’s best, it has cats in it!

I’ve been working on it almost a week, with video recording and editing. It has english subtitles so click boldly.

Few days ago I’ve released a crowdfunding project for PowerPack to Ninja Cat. By doing this I want to significantly improve the game. I love it very much, got good reactions from players and game press alike, so it looks like a sensible thing to do :)

PowerPack logo

Here’s the list of new features that I want to add in PowerPack:

  • visualizing the path on which player is moving; especially useful at junctions (which are generally not understood by players)
  • dinosaurs can change their behaviour such as: kamikadze – runs at you with a bomb and you better shoot him at distance; knight – has shield and you have to type 100% correctly or you start from scratch
  • ability to use limited ninja equipment using F1-F3: spiders (deal letter damage to dinos which walk over them), throwing knives (immobilise or slow down dinos) and fog bomb (you become invisible for few seconds and dinos don’t know where to go and attack)
  • collecting statistical information for speed of typing (WPM), accuracy and score – over time, and showing graphs of it, to show how well are you developing.
  • option to choose language maturity level – child (for kids), normal (like now), weird, adult (swearing) and porno (omg ;)
  • over 15 zl ($5) you also get downloadable version without ads, for a one month exclusive.
  • dozens of additional hours of even more addicting and varied gameplay :) that will also increase the speed and accuracy of your typing.

przykladowe-poziomy

There will be also new content (2 out of 5 existing levels shown above):

  • 1 new level (most likely Notre Dame cathedral)
  • 1 new dinosaur (most likely Stegosaur)
  • 1 new powerup (most likely dynamite)

I predict all of this can be completed in about a month, and so I’m collecting money for one month worth of surviving in Krakow.

One thing that needs to be stressed, is that altough the game is available for free now on internet, the PowerPack version for the first month after creation will be available exlusively to those who back me up. They will get installable, DRM-free, ad-free version. Next, by choosing at least 15 zl ($5) you get to add words to the in-game typing list.

Obviously by backing the project with higher amounts you also get some cool gadgets (altough the mail expenses of sending T-shirt to USA or even England will kill me so please don’t :P )

gadgets-overview

You can back me up also if you’re not from Poland – wspieram.to accepts payments through PayPal. I’ve prepared a film that will explain polish interface of Wspieram.to and guide you through the backing process. I recommend to watch it in fullscreen:

EDIT2: currently the news from the battlefield is: 31% collected and 8 days left. It’s still possible to fund the PowerPack, so please support this indie game developer :)

Leave a comment

Config::Toggle plugin for FlashDevelop

I am using FlashDevelop to code in AS3. It’s stable, quite feature complete and very lightweight – using it to develop Ninja Cat was pleasure. During that time I learned that it’s possible to create conditional compilation constants, so you can selectively include some pieces of code. Sounds complicated, but it’s just a simplified version of #ifdef macrodefinitions from C language. It’s a simple way of creating traditional debug/release versions of game, but you can also extend it to editor/stats/ads/portal specific versions.

Problem

Unfortunately editing those constants in FlashDevelop is time and labour intensive. If you want to change the value of some of your project compiler constants, you have to:

  1. click mouse on Project->Properties, or better press ctrl+P
  2. click mouse on the last tab Compiler options
  3. click again on the small plus next to Compiler constants
  4. click on the chosen CONFIG, backspace a few times, write the new value
  5. because enter doesn’t close the dialog, grab the mouse again and click OK

Now if you forgot to change also some other constant, you have to do the same again. And it’s pretty much the same if you want to check what’s the value of one of those constants.

FlashDevelop compilation constants

Seems like a lot of time? It is, especially if you’ve based the configuration of your project on those CONFIGs, you’re using them all day long, testing different builds. And in my case (probably not only in mine) that’s what’s happening – because they’re incredibly useful, allow to quickly change the build of the app in a fundamental way, in an mutually independent way.

… (read about the solution)

2 Comments

Level editor design in Ninja Cat, part 1 – inner workings

I’d like to share some of the design concepts applied, and lessons that I learned, while creating and using in-game editor in Ninja Cat. I like reading about how other developers make games, their stories from the trenches – it inspires me, gives knowledge and allows learning on others errors :-P So here is my story for you – how the Ninja Cat editor works, what’s the reasoning behind some of its concepts, and what proved to be good, bad or ugly.

At start, I want to explain how levels look like, so that it will be easier to communicate. It will be rather complete list of all possibilities, because of what I’ve stated – I like reading gory, low level details and think it’s very informative.

How does it work?

When the game is built with editor support (which can be checked using CONFIG::editor directive in AS3), press TAB during game. Then the game gets paused and editor UI appears, as visible on screen.

The editor has 3 modes, changed by pressing 1-2-3 number keys (or clicking on the menu captions on left). I will refer to controls visible in top left corner as main menu.

… (read the rest of article)

Leave a comment

Trailer for Ninja Cat and interview for Puerto Rican gamers

Recently I’ve been pretty busy with few activities. They were:

Trailer

It came faster than I expected… after one week of sending emails, exchanging ideas and fixing problems… Ladies and Gentlemen, here comes the TRAILER:

It has been created by Michał Friedrich, who’s got much more experience with video editing than I can ever hope.

It made nice splash on polish social sharing site, Wykop. It got there 276 likes, 87 comments, almost 10 thousand views and was featured on the main page. Because of that, YT video also jumped to 4300 views. For me it’s a lot. That sunday I was constantly collecting my jaw from the floor. I love that Ninja Cat finally became exposed to more players.
 

Interview

Recently I’ve been interviewed by Bay A Pantoja, chemist and owner of Peurto Rican facebook gamer fanpage. Puerto Rico lies in Latin America, but what you won’t learn from Wikipedia is that they have a very strong gamers community there. Mostly Playstation lovers, but recently there’s trend toward PC. You can read it in spanish on their fanapge, and below is the english original:

 

Bay: Hi Hubert, welcome to our little Facebook page. We have over 2 thousands fans who plays on different platforms, from mobile to PC, and on behalf of them we appreciate that you are dedicating some of your time to us.

A: No problem Bay, I’m happy to participate and come into contact with Puerto-Rican game players … (read the rest of interview)

Leave a comment