January 19, 2014

UDK text input using the native iOS keyboard

It's easy to use the native iOS keyboard to get the text input from player in UDK despite it's undocumented function. I've prepared an extended example below.

The result you can see in Doominator:

I love hidden possibilites in UE3! :)

January 11, 2014

How to get the receipt info of In-App purchase in UDK

It's very simple to get the receipt info (encoded in base64 form) in UDK. However, its not obvious thing if you're trying to find it out from the unreal script code, and there is no word about it on UDN.

This value is hidden in PlatformInterfaceData struct as StringValue2 variable. So, you can simply get it in PurchaseComplete delegate:

So, that's the value you should use to check the purchase validation via AppStore servers.


October 29, 2013

HLSL noise effect for UDK

Sometimes we need to have the noise effect inside our shaders. Unfortunately it can be not a trivial task in some cases.

For my FFT-based ocean shader I used the solution that I've found on Stack Overflow (thanks, Michael!).

I'll dublicate it here to save the solution:

To understand how this works if we break the formula down into its constituent parts it becomes easier to visualize what is going on:

Paste the above into: https://www.shadertoy.com/new

It can be simply used for materials in UDK. You just need to create a custom HLSL node:

Noise effect as simple post-effect

It's a fast example how this trick can be used. But it will be better to use it in the material of particular mesh rather than post effect! Use UVs as p param and it'll be cool.

Captured screens with different noise scale:


October 26, 2013

Marine adventures on abandoned space base

Just few screenshots of our new deathmatch map for Doominator. All pics are "as is" screens from my iPad 4.

Being in a WIP state, map is deserted and empty, so marine walks around unarmed :) No monsters here. For a while.

By the way, most of textures are created by GameTextures team (thanks, guys!).

October 7, 2013

Doomstalker UI source released

Keywords: sci-fi, cool, interface, HUD, source, PSD, free, download :)

We've decided to release the source of the UI we've used in Doomstalker some time ago (summer 2012). The game concept was changed a lot, so we don't use this screens anymore. But now you can use it as you want!

You can get it here: download

There are no restrictions. It's free for both commercial and uncommercial use. You can modify any screens as you want.

Screens layout by me, graphic design by admirable Irina Narykova.

September 29, 2013

Parse deploy UnicodeDecodeError fix

I've met an amusing bug just right now. My projects are based on Parse Cloud service, and today I've tried to deploy my code from my main Win7 machine. I'm russian guy and my OS has russian localization. So..

Previously I've never met this error, because Python is not my favorite language (and I worked with it on English OSX before). I've instantly googled and found that I should change the code to fix it. Unfortunately I couldn't make it this way - Parse CLT is a binary only.

Then the magic happened.

Fix is very simple - you should delete all non-latin Mime types from your system (f.e. I have few them in Russian). The location is:

And Then John Was A Zombie it works ok now.

September 28, 2013

UDK logging tips (1)

Game logging is a very important thing. So, I want to share some things I'm using to make it comfortable and informative.

1. `Location macros

Use 'Location macros to get actor instance name and class/function location of log event. F.e.:

2. Custom log macroses

In Globals.uci file of your game package (it should be placed in .\Development\Src\MyGame\ folder, not inside Classes folder!) you can add macros like that:

Now you'll be able to use `LogAI(...) when you want to log some AI events (for example). Of course you can customize message as you want.

The great point of using this macros is that you can suppress its output into console by adding simple config in DefaultEngine.ini file:

Once you've decided that you needn't this type config in console all the time anymore (f.e. you've finished hard debug work on AI), you can suppress it, and vice versa.

3. Remember Object's debug functions

ScriptTrace()GetFuncName()DebugBreak(..) are your best friends!

UDK build system for Sublime 2

I'm using Sublime 2 to work on my projects. It's very cool editor which saves my eyes and time a lot.

It can be easily used for building Unreal Engine 3 projects (and UDK projects too).

You have two basic variants:
  1. Use great UnrealScript IDE Plug-in for Sublime Text 2
  2. Create your own simple build system
I strongly recommend new Sublime users to choose the first variant. It has nice syntax highlight for unreal code and good editor integration.

Personally I prefer the second variant, because I like C++ syntax highlighter colors to be used with my code, and I really dislike that Zinggi's plugin changes some key binds and sequences I'm using.

So, if you want to use just a build system for your UDK game, you should:

1. Go to Tools -> Build system -> New build system
2. Add following config:

3. Save it to the ".\AppData\Roaming\Sublime Text 2\Packages\User" folder (should be opened by Sublime by default).
4. Select new build system in Tools -> Build system menu.

Now you'll be able to use Ctrl+B and etc key binds for script building.

Please note that I'm using "shell" : true config to launch UDK as separate process in new window. Unfortunately I can't receive UDK's output into Sublime's console after its update.

September 22, 2013

Publishing UDK game with iCloud in AppStore

If you'll try to upload you UDK-based game with enabled iCloud for review into iTunes you'll met few errors, and official Epic's documentation will tell you nothing.

You just need to add entitlements config to your build. It's very simple, see below.
  1. Download UDKGame.entitlements
  2. Save it to the \UDKGame\Build\IPhone\ folder
  3. Fill it with your own values:
    1. UNIQUESEED is the app seed of your application on Provisioning portal (10 letters)
    2. com.MYCOMPANY.MYGAME is your app's BundleIndentifier. It should be the same you're using in Info.plist and on provisioning portal ("com" can be changed to your own domain, f.e. i'm using "ru")
  4. Rebuild the .ipa
Pay attention to com.apple.developer.ubiquity-container-identifiers block. Its value contains "save" postfix!

If template link is broken you can use this:

Doomstalker reborn

In time, but Doomstalker is alive. First public release to get initial feedback from players even is in AppStore now.

It will be multiplayer game in style of Quake 3 and Unreal Tournament (but presudo-isometric). I've made a lot of work on game balance now, and next update will be very pleasant and interesting to play. Single-player mode included.

Game style was changed and improved too. You can compare it with old screens.

Also, it's the ticket for SeaCraft to be ported to iOS. Rock'n'roll!