пятница, 21 июня 2013 г.

All you need to know about serialization in Unity3D



upd: video is removed, so check out this link.

среда, 12 июня 2013 г.

Lugat sozluk

Do you remember our osman-turkish ios dictionary? I've been asked for android version many times.
To those people: there's android version with more than 50000 words! It's really cool app!

On these holidays I reverse-engineered it and now I have their words database. I just need to convert it to my own format, solve licence issues. I think to finish this by the end of June.

пятница, 24 мая 2013 г.

Так, ни о чем

один файл, а внутри: два энама, три класса, две руками написанные стейт-машины, 400 строк кода. Здравствуй, быдлокод:


вторник, 14 мая 2013 г.

Some materials from knowledge sharing seminar



Two months ago we started our unity knowledge sharing seminars. I forgot to share materials I promised to, so let me do it here.


2D UI - NGUI (Presentation on russian)


2D in Unity3D from Рустам Ганеев

Useful links:


Unity shaders (Presentation on russian)


Useful links:

UPD: Dustin Lee, the Unity evangelist kindly shared awesome slides about shaders, just check it out:

среда, 17 апреля 2013 г.

Dynamic texts in ngui

The only problem I have to deal with 2D UI in NGUI plugin is text fonts. In details, there's a bunch of problems:

  • Dynamic font support (UPD: from NGUI 2.5 dynamic fonts are supported out-of-box)
  • Localization(arabic, hebrew languages, chinese etc).
  • Input texts
As I'm working on localization in deep, I found some useful things to solve problems described above:
  • for dynamic font, use https://github.com/imkira/unity-sysfont. It seems to be out-of-date (it hasn't been updated for 9 months), but it works and you need just to tweak it for youself. Maybe I'll finish it in holidays.
  • for chinese, japanese dynamic fonts works ok, use plugin above. If you intent to support arabic languages,  use http://u3d.as/content/abdullah-konash/unity-arabic-support/2B8. This asset allows you to write in rtl mode. Now I'm looking for hebrew plugin, or if I find someone who can read hebrew, I'll write it for myself. 
  • Situation about input text is troublesome. Changing uiinput component will cause problems with supporting and I don't like to do it. But there's no other way to cope with it.

суббота, 6 апреля 2013 г.

Кто виноват и что делать?

Не знаю почему, но когда появляется проблема, мы задаем два исконно русских вопроса именно в таком порядке:

  • кто виноват?
  • что делать?
А теперь маленький лайфхак - инвертируем порядок. То есть сначала думаем, что делать, как решить вопрос, а потом уже ищем виноватых, если в этом осталась какая-либо нужда.

P.S. Мысль вроде как и капитанская, но, если применять в жизни, получается очень эффективно, намного эффективней первого способа. 

пятница, 5 апреля 2013 г.

//TODO, //HACK, FIXME

В мире спортивного программирования всегда все просто: у тебя всегда валидные данные, обо всем позаботились организаторы. В промышленных масштабах это далеко не так: по закону Мерфи если что-то может пойти не так, так обязательно и будет. Поэтому ты тупо пишешь кучу проверок на случай ядерной войны. Или не пишешь. Оставляешь //TODO: check c надеждой на то, что когда будет скучно и не захочется ничего делать, будешь писать эти глупые проверки.

Сегодня запустили игру, она падает на уровне. Смотрим, где падает: null-reference exception. Смотрим код:
public void DoAction(Transform t) {
 //todo check before setting
 t.localPosition = foo;
 t.localRotation = bar;
 t.localScale = foobar;
}

Падало как раз при присвоении, потому что t - null. Как говорится, без комментариев. Хотя есть один: "//TODO:" существует не для того, что его оставляли и забывали, а для того, чтобы это фиксили и делали это как можно быстрее. И для //HACK, //FIXME инженерный закон "работает - не трогай" не катит - это просто бомба замедленного действия, который когда-нибудь рванет в совсем неожиданное время и неожиданном месте(ну, к примеру, во время презентации или, не дай Бог, релиза).