Update on my Unity3D plugins

Hey there, dear friends, subscribers and strangers passing by!
Today I’d like to tell you something about my Unity3D plugins I sell on the Unity Asset Store.

Let me begin with one plugin I didn’t introduced on my blog yet: Advanced FPS Counter!

This is a super simple and flexible way to show FPS, memory usage and some hardware info right in your app on target platform \ device.
This plugin may be really useful on the project testing phase, when you send your app to the beta testers and wish to hear from them what performance on what hardware do they have. Or if you just wish to see all these data yourself in your app running on the target device.
Anyway, I hope you’ll find it useful and helpful. And most important part – it’s almost free, currently I sell it for just five bucks (except the Nebraska)!

Another good news I’d like to tell you – latest Anti-Cheat Toolkit update finally hit Asset Store and now available for purchase!

It brings some great new features, like speed hack detection and I did fixed lot of community reported bugs and implemented some community requested features.
I also wish to let you know I’m already working on next significant update which will raise plugin’s price a bit. As you may see Anti-Cheat Toolkit went really far from what it was on its first Asset Store day, and I never changed its price since releasing it in Aug’13. I hope you see it deserves few additional bucks =)
So, I’d suggest to hurry and grab it for current low price until next update released! =P

After all, I wish to hug all people helping me to make my plugins better or supporting me in any other way. In first place I’m talking about all my friends and customers who were so kind to send me a bug report, or leave a review in Asset Store or just say me “good work” on forums. Thank you all, guys!

Special thanks and hugs fly out to my little-almost-year princess and my wife, her great mommy <3!

Share Button

Happy New Year 2014!

Hey, dear friends!
I wish you to have a lot of new and exciting ideas, lot of fun and awesome people around you in the new 2014 year!
2013 was so great for me – I was introduced into the happy father role by my small wonderful baby-lady Elina, got my first car, learned dozens of extremely interesting Unity3D world bits, launched Anti-Cheat Toolkit and had so much great and productive days!
Let all your wishes come true in this year and take a high five from us! ^_^
Merry Christmas and Happy New Year!!!

Happy New Year!

Share Button

Types conversion in Unity3D

Hey there!
Recently I needed to store floats as integers and vice versa (used it to easily xor floats in my Anti-Cheat Toolkit) and I came across few ways of doing this.

Unsafe pointers – fastest one:

public unsafe int FloatToInt(float value)
{
	return *(int*)&value;
}

public unsafe float IntToFloat(int value)
{
	return *(float*)&value;
}

Easy, right?
Please, note, it requires /unsafe compiler option. To leverage unsafe operations in unity, you have two commonly used options to choose from:
1. Use it in a separate dll, compiled with /unsafe option.
2. Set /unsafe option right in your project using “Global Custom Defines”, putting it in .rsp file in your Assets/ root. See bottom of this page for details.
And keep in mind unsafe code is not supported in some build targets, like Web Player and Flash Player.

Unions (Explicitly layouted structs) – slower than pointers, but works in Web Player (not in Flash Player, d’oh!):

[StructLayout(LayoutKind.Explicit)]
internal struct FloatIntUnion
{
	[FieldOffset(0)]
	public float f;

	[FieldOffset(0)]
	public int i;
}

public int FloatToInt(float value)
{
	var u = new FloatIntUnion();
	u.f = value;
	return u.i;
}

public float IntToFloat(int value)
{
	var u = new FloatIntUnion();
	u.i = value;
	return u.f;
}

Pretty easy to use, safe and works on more build targets comparing to pointers.
Note [StructLayout(LayoutKind.Explicit)] attribute is used here in conjunction with [FieldOffset(*)] attribute. It allows you to set each struct field position in memory explicitly and read data stored there.

BitConverter class – pretend to be slowest:

public int FloatToInt(float value)
{
	return BitConverter.ToInt32(BitConverter.GetBytes(value), 0);
}

public float IntToFloat(int value)
{
	return BitConverter.ToSingle(BitConverter.GetBytes(value), 0);
}

Safest one though (works even in Flash Player).

I should mention there are so-called “safe pointers” in C#, used through Marshal class, but they are pretty complicated, require unmanaged memory allocations and constant control on memory at all (C# developers are usually rely on GC and do not bother on allocations), so I’ll not post Marshal review here for now, these 3 methods I described are usually enough for the types conversion.
I hop I’ll have some time to make performance tests on these methods in latest Unity 4.3 later and post results with tests sourcers here (in another blog post).

Questions? Ask in comments!

Share Button

Meet Anti-Cheat Toolkit: prevent cheating easily in your Unity3D game!

Hey, dear fellows!
Today I’m glad to present you my first contribution to the Unity3D Asset Store:

Anti-Cheat Toolkit logo

Anti-Cheat Toolkit (ACT)!

This is a tiny toolkit, created to help you protect your Unity3D project from many cheaters / hackers (not from all – skilled and well-motivated person can hack anything). Current ACT version allows you to protect sensitive variables and PlayerPrefs from cheating.

Feel free to watch a small video I made to show how to cheat your game (or whatever) and how ACT allows you to prevent such cheating: http://www.youtube.com/watch?v=6–2JECbpSE

So, currently ACT allows you to keep variables safe from all kind of memory searchers (Cheat Engine, ArtMoney, etc.) and prevent your saved PlayerPrefs data from altering by any person on any platform.

Just add ACT DLL into your project and replace PlayerPrefs to PlayerPrefsObscured, sensitive int to ObscuredInt, float to ObscuredFloat, etc. and you’re done! Really :)
This is all you need to do to add some protection from cheaters to your project in no time, no any additional steps required!
For more flexibility I added custom crypto keys usage (not necessary, but feel free to use it), if you’re nerdy enough :)
ACT is very simple and intuitive to use as you can see – you shouldn’t have to know something special at all. Hope you’ll like it!

Anti-Cheat Toolkit at:
Own ACT plugin page
Unity Forum
Asset Store

GIVEAWAY IS ENDED, SORRY :P  

PS: I wish to say special thanks to Daniele Giardini for great logos and all priceless feedback he provided about ACT!
And I’d like to let you know about some must-have Unity3D content Daniele created, like tweening engine HOTween or “Swiss knife” panel HOTools, and you definitely should check out Goscurry – super fun, creative and addictive game!

Share Button

Introducing SWF iD: Flash reverser companion

Hey, dear friends!
I’m very glad to share with you one nice freeware tool every flash reverser (especially beginner one) should have in his toolbox: SWF iD!
It was recently released to the public by Lizard. The purpose of this tool – to allow reverser make fast first glimpse at the target swf file, study its protection (if present), compression, AS version, tags, etc.
Here is how it looks like:
SWF iD

You could find it very similar to the famous PE files analyzer PEiD

More screenshots: http://swfid.je1.ru/screenshots.php

Please, note the Process Scan button – it allows you to search for SWF files right in the processes memory and dump them to disk, very handy addition. This is a search example in Flash Player process, running SWF packed with SecureSWF:
SWF iD process scan

Processes IDs will be added to the processes names in the future versions

You can see here unpacked swf found and detected as Secure SWF 4.0 protected. Process Scan can ignore standard built-in Flash Player SWF files (Filtration FP Noise checkbox) and can skip fake SWF signatures as well (fakes detection sensitivity will be configurable in future versions).

SWF iD supports plug-ins and ships with few default: http://swfid.je1.ru/plugins.php
Keep in mind tool is still in early development stage so you’ll meet some bugs for sure, feel free to report them here: swf-id{at}ya.ru.
If you have any suggestions, ideas or anything else to say, just post all this here in comments, or send directly to author using email I mentioned before!

SWF iD homepage: http://swfid.je1.ru/.

Share Button