воскресенье, 21 октября 2012 г.

Arcanum Reborn:Riverrise

Присоеденился к разработчикам. На данный момент, проект не ориентирован на прибыль, но мне все же кажется хорошей инвестицией в будущее.
Веб-сайт проекта: http://www.arcreborn.ru/
Скриншоты:

пятница, 12 октября 2012 г.

Необходимые ресурсы для геймдизайнеров

В данном топике я хочу представить подборку ресурсов, имеющих непосредственное отношение к дизайну и разработке игр. В первую очередь, эта информация будет полезна начинающим или будущим геймдизайнерам, которые только задумываются о выборе профессии, но, возможно, и профессионалы своего дела найдут что-то полезное или интересное для себя. Кроме того, я предполагаю, что читатели хорошо владеют английским языком, что в наше время для айтишников, настоящих или будущих, подразумевается практически по умолчанию.
Итак, поехали.

среда, 10 октября 2012 г.

Clip2net in Debian


Some articles how to install really usefull software, Clip2net, in Devian.

http://linux-update.blogspot.fi/2010/06/clip2net-fastest-way-to-take-edit-and.html
http://qwe.az/blog/2038.html

четверг, 4 октября 2012 г.

Готовые мини-решения (туториалы) для Shiva3d

Автоматический батчинг статических объектов [ru] - статья на http://www.shiva3d.ru
Autimatic batching for static objects [en] - atricle at http://www.stonetrip.com

Уменьшить количесто DrawCalls от hud - статья на http://www.shiva3d.ru 
Профайлинг (отображение ФПС, памяти, draw call)  - статья на http://www.shiva3d.ru 
Глобальный список объектов - статья на http://www.shiva3d.ru
Поиск объекта по имени -  статья на http://www.shiva3d.ru
Получение глобальных координат вертекса - статья на http://www.shiva3d.ru

понедельник, 30 июля 2012 г.

Fade A Whole Scene From Black & White to Colour


This can be done by following these steps. First, you'll need Unity Pro, because modifying the scene with a full screen image effect is a Pro-only feature.

вторник, 24 июля 2012 г.

C# List vs LinkedList


Thinking of a linked list as a list can be a bit misleading. It's more like a chain. In fact, in .NET,LinkedList<T> does not even implement IList<T>. There is no real concept of index in a linked list, even though it may seem there is. Certainly none of the methods provided on the class accept indexes.
Linked lists may be singly linked, or doubly linked. This refers to whether each element in the chain has a link only to the next one (singly linked) or to both the prior/next elements (doubly linked).LinkedList<T> is doubly linked.
Internally, List<T> is backed by an array. This provides a very compact representation in memory. Conversely, LinkedList<T> involves additional memory to store the bidirectional links between successive elements. So the memory footprint of a LinkedList<T> will generally be larger than forList<T> (with the caveat that List<T> can have unused internal array elements to improve performance during append operations.)
They have different performance characteristics too:

четверг, 5 июля 2012 г.

Procedural terrain. Part 3. Realtime terrain editing.

So, now we have dwarf, which can be ordered to make some holes in the terrain (and to build huge castle, in perspective).


вторник, 3 июля 2012 г.

Unity3D colliders benchmark

All tests were done on an intel core2duo 3ghz imac with no rendering, just physics.


Static colliders seem to have such a minimal impact on performance, Upto 60,000 and beyond of all different colliders were causing no noticable effect on the frame time (<3ms)

So I tried testing dynamic colliders instead, much more challenging.

Remember this is just physics, your renderer would bottleneck way before reaching 2500 individual objects.

суббота, 23 июня 2012 г.

Procedural terrain. Part 2. Slicing camera, "fog of war"

Spent several hours, planing implementation. Considering stacks, queues, cashes, but decided to play only with visibility at the current moment.

So, here we are: for now, number of visible chunks (in current project, 1 chunk = 1 level of terrain) is depends on camera height. On theese screenshots, positions of the camera are the same, except height.
Next step is to add "fog of war": those cubes, that are incide of the mountain should be brown, and similary, cubes for air should be blue.

пятница, 22 июня 2012 г.

Procedural terrain. Part 1. Basic terrain render.

Decided to play with procedural terrain a bit. Terrain's square shouldn't be extremely high, so i decided to set 1 chunk = 1 level.

At first, i'm generating a terrain with Perlin Noise (as a highmap, highlighting it with particles). Then, i convert data to per-layer(matrix) form: now i can access to every layer and get known, where is air and where is ground.
Next step is mesh-creation:

Upper side

четверг, 21 июня 2012 г.

Juice it or lose it - a talk by Martin Jonasson & Petri Purho

Very good talk and really great and clear example of how juicing a game can make a dull game much more interesting without making any modification to the game mechanic.

Off-by-one error

An off-by-one error (OBOE) is a logic error involving the discrete equivalent of a boundary condition. It often occurs in computer programming when an iterative loop iterates one time too many or too few. Usually this problem arises when a programmer fails to take into account that a sequence starts at zero rather than one (as with array indices in many languages), or makes mistakes such as using "is less than or equal to" where "is less than" should have been used in a comparison. This can also occur in amathematical context.


Consider an array of items, and items m through n (inclusive) are to be processed. How many items are there? An intuitive answer may be n−m, but that is off by one, exhibiting a fencepost error; the correct answer is n−m+1.
For this reason, ranges in computing are often represented by half-open intervals; the range from m to n (inclusive) is represented by the range from m (inclusive) to n+1(exclusive) to avoid fencepost errors. For example, a loop that iterates five times can be written as a half-open interval from 0 to 5:
for (i = 0; i < 5; i++) {
    /* Body of the loop */
}


Src: http://en.wikipedia.org/wiki/Off-by-one_error

среда, 20 июня 2012 г.

Тесты на Topcoder.com

Topcoder.com - отличный сайт, предоставляющий платформу для тестирования программерских скиллов.
Рекомендуется при собеседованиях.

суббота, 16 июня 2012 г.

Чистка контекстного меню "Создать"

Можно удалить эти пункты из списка Создать, просто удалив подраздел ShellNew из ветви реестра вида HKEY_CLASSES_ROOT\«расширение файла».


Да, важно не забывать о резервном копировании реестра :)

понедельник, 11 июня 2012 г.

*Updateable* Gamedesign articles collection

Doom3 source code review

Unity.Class creation order.

We have creation code:


Debug.Log("1");
GameObject obj = GameObject.Instantiate(prefab, new Vector3(0, level, 0), Quaternion.identity) as GameObject;
Debug.Log("2");
obj.name = level.ToString();
Debug.Log("3");

and object code:


void Start () 
{
Debug.Log("4");
}
void Awake()
{
Debug.Log("5");
}

SendMessage vs Realtime Call

Unity3d, C#

gameObject.SendMessage("doTestCall"); vs tpb.doTestCall();

Происхождение украинского языка.

Недавно наткнулся на "языковедов", которые утверждали, что украинский был искуственно создан в районе 1890-х. Решил поковыряться в инете на эту тему, поспрашивать знатоков. Вот что всплыло:
http://uk.wikipedia.org/wiki/Енеїда_(Котляревський)

воскресенье, 10 июня 2012 г.

Ignore file for Mercurial and Unity


Here’s a working ignore file for use of Unity and Mercurial simple, but slightly different from the instructions posted in the current docs, so figured i’d pass it on for anyone else who cares to check it out.

суббота, 9 июня 2012 г.

Graphs, visualizing data

Using particles system in Unity3d.
Bonus:

пятница, 8 июня 2012 г.

Roguelike dungeon generation

Отличная подборка статей по генерации подземелий. Всего 10 статей, в конце есть ссылка на солюшен. Получается что-то типа

четверг, 7 июня 2012 г.

Perfect Arcanoid/Pong ball physics in Unity

this is what i did:
set Drag and Angular Drag of your ball to 0.

среда, 6 июня 2012 г.

How to choose a programming language?


Each new project, whether a standalone program, or a component for an existing program, faces a choice of programming language. Just using what is most popular, or what has been done before, is a poor way to select. You should always evaluate your options and be constantly looking for better ways to get the job done.
While evaluating a language you should also be considering the overall architecture of your project. Not all part of a project need to be, or even should be, written in the same language. The language process will actually be a vital part of your initial design process. How you split your modules and connect the pieces is highly influenced by the answers to the questions posed here.
I’m going to avoid giving specific language examples in this article; I don’t wish to bias your selection with my experience. While some projects will clearly have winners and losers, you should be able to arrive at those conclusions on your own. Languages also change over time, so what was best two years ago may no longer be so, and what was previously excluded could now be a good candidate.

четверг, 31 мая 2012 г.

Got own copy of Diablo 3

Thanks to comrade Dmitry for this great present to my birthday!

четверг, 24 мая 2012 г.

Kinect + OpenNi + Nite + SensorDriver + Unity3d


Install OpenNI, NITE and the Sensor Driver
If everything worked out, you should see the camera in your Device Manager(under PrimeSensor : Kinect Camera, Kinect Motor).

PS: only 32-bit version works with Unity.


Running Unity sample


Download and import this Unity package.(latest version here)



Src: here

воскресенье, 29 апреля 2012 г.

Инфографическое резюме

Решил запилить сюда проекты, в которых принимал участие - всяко пригодится. Но так, чтоб еще и визуально красиво было :)

Благо, камрад Lord подсказал, что идея далеко не инновационная. Полез гуглить, список найденного привожу ниже. Плюс комментарии после первых нескольких минут пользования.

Критерии отбора:
* возможность создавать длительные события
* возможность вставлять скриншоты (с ссылкой на проект)
* ну и это все должно красиво выглядеть

пятница, 30 марта 2012 г.

Rubber Duck Problem Solving


Bob pointed into a corner of the office. "Over there," he said, "is a duck. I want you to ask that duck your question."
I looked at the duck. It was, in fact, stuffed, and very dead. Even if it had not been dead, it probably would not have been a good source of design information. I looked at Bob. Bob was dead serious. He was also my superior, and I wanted to keep my job.
I awkwardly went to stand next to the duck and bent my head, as if in prayer, to commune with this duck. "What," Bob demanded, "are you doing?"
"I'm asking my question of the duck," I said.
One of Bob's superintendants was in his office. He was grinning like a bastard around his toothpick. "Andy," he said, "I don't want you to pray to the duck. I want you to ask the duck your question."
I licked my lips. "Out loud?" I said.
"Out loud," Bob said firmly.
I cleared my throat. "Duck," I began.
"Its name is Bob Junior," Bob's superintendant supplied. I shot him a dirty look.
"Duck," I continued, "I want to know, when you use a clevis hanger, what keeps the sprinkler pipe from jumping out of the clevis when the head discharges, causing the pipe to..."
In the middle of asking the duck my question, the answer hit me. The clevis hanger is suspended from the structure above by a length of all-thread rod. If the pipe-fitter cuts the all-thread rod such that it butts up against the top of the pipe, it essentially will hold the pipe in the hanger and keep it from bucking.
I turned to look at Bob. Bob was nodding. "You know, don't you," he said.
"You run the all-thread rod to the top of the pipe," I said.
"That's right," said Bob. "Next time you have a question, I want you to come in here and ask the duck, not me. Ask it out loud. If you still don't know the answer, then you can ask me."
"Okay," I said, and got back to work.


Src: http://www.codinghorror.com/blog/2012/03/rubber-duck-problem-solving.html

четверг, 22 марта 2012 г.

среда, 21 марта 2012 г.

Tenderizer project goes to indiecity.com and kongregate.com

Сегодня наш проект таки был заапрувлен на indiecity.com
http://store.indiecity.com/game/Tenderizer
Версия без клиента:
http://www.kongregate.com/games/VitaliiV/tenderizer

вторник, 21 февраля 2012 г.

Unity. Multiply windows


In the "Shortcut" tab under the Target section it will read "C:\Program Files (x86)\Unity\Editor\Unity.exe".
  You will want to change that to "C:\Program Files (x86)\Unity\Editor\Unity.exe" -projectPath

воскресенье, 12 февраля 2012 г.

О завтраках

Нашел полезную статью: http://korrespondent.net/tech/health/1315644-vedesh-aktivnyj-obraz-zhizni-zavtrakaj
В начале - много о полезности правильных завтраков. В конце - 2 абзаца по теме, которые себе и запишу.

пятница, 3 февраля 2012 г.

SxS hell

Spend a day on solving this problem. Now it's solved, but i'm not satisfied, actually.
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/f06768b8-85a0-456d-9ae3-42baa71a23e7

среда, 1 февраля 2012 г.

Unity script compilation stages


1. All scripts in "Standard Assets", "Pro Standard Assets" or "Plugins" are compiled first.
Scripts in one of these folders can't directly access scripts outside these folders.
It is not possible to reference the class or its variables directly, but it is possible to communicate with them usingGameObject.SendMessage.
2. All scripts in "Standard Assets/Editor", "Pro Standard Assets/Editor" or "Plugins/Editor" are compiled next.
If you want to use the UnityEditor namespace you have to place your scripts in these folders. For example to add menu items or write custom wizards you have to place your scripts in those folders.
These scripts can access scripts from the previous group.
3. All other scripts outside "Editor" are compiled next.
All scripts that are not in the folders above or in "Editor" are compiled next.
All scripts that are compiled in this step have access to all scripts in the first group ("Standard Assets", "Pro Standard Assets" or "Plugins"). This allows you to let different scripting languages interoperate. For example, if you want to create a Javascript that uses a C# script: place the C# script in the "Standard Assets" folder and the Javascript outside of the "Standard Assets" folder. The Javascript can now reference the C# script directly.
Scripts that are placed in the first group, will take longer to compile, since when they are compiled the third group needs to be recompiled too. Thus if you want to reduce compile times, put scripts that seldom change into group 1 and scripts that change a lot into group 3.
4. All scripts in "Editor" are compiled last.
If you want to use the UnityEditor namespace you have to place your scripts in these folders. For example to add menu items or write custom wizards you have to place your scripts in those folders.
These scripts can access all scripts in all previous groups.

Unity3d BCE0019: component is not a member of 'Object'

If master were a GameObject or Component, then what'd you actually need is

selected = (master.GetComponent("Master_control") as Master_control).selected;
But that uses the GetComponent that takes a string, which is no good. You could improve its performance by doing
selected = (master.GetComponent(Master_control) as Master_control).selected;
But that's long. Use the generic form, which is as yet undocumented. :-P
selected = master.GetComponent.<Master_control>().selected;

Source

вторник, 31 января 2012 г.

Global Game Jam 2012 - Tenderizer

Запилили вот такой проектик за 48 часов командой из 4 человек. Игра получилась вполне полноценной: 7 уровней, звук/музыка, начало и конец. Короче, круто время провели :)
Игра: http://globalgamejam.org/2012/tenderizer/
Видео: http://www.youtube.com/watch?v=KbmQIBX_uEk


понедельник, 30 января 2012 г.

WinSxS


The Problem

At work, we recently upgraded to Visual C++ 2005 Service Pack 1 (SP1). At the same time, our application stopped working for some users.
Everybody that had SP1 was able to run the application. Some people *without* SP1 were also able to run the application.
My system (not SP1) could not run the application built by the newly upgraded SP1 build machines, so I tried to figure out why.  I used Dependency Walker to find out why my application would not load.
Dependency Walker showed that the C runtime library (msvcr80.dll) could not be found. I noticed the full path of where the application was trying to get msvcr80.dll was:
C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_
  8.0.50727.
762_none_24c8a196583ff03b\msvcr80.dll
I searched my system and I *did* have msvcr80.dll in my \windows folder, but not in the path the application was using.
I had not seen a path like that before for a DLL. I had no idea why the application was looking there instead of in \Windows\system32 like it normally would.
I tried copying msvcr80.dll locally to the application folder and refreshed Dependency Walker. That had no effect...the application could not find msvcr80.dll.
That used be the failsafe way to make an application see a DLL...put it in the same directory as the application. Something was very different now.

воскресенье, 22 января 2012 г.

Back to Basics. C strings


We spend a lot of time on this site talking about exciting Big Picture Stuff like .NET versus Java, XML strategy, Lock-In, competitive strategy, software design, architecture, and so forth. All this stuff is a layer cake, in a way. At the top layer, you've got software strategy. Below that, we think about architectures like .NET, and below that, individual products: software development products like Java or platforms like Windows.
Go lower on the cake, please. DLLs? Objects? Functions? No! Lower! At some point you're thinking about lines of code written in programming languages.
Still not low enough. Today I want to think about CPUs. A little bit of silicon moving bytes around. Pretend you are a beginning programmer. Tear away all that knowledge you've built up about programming, software, management, and get back to the lowest level Von Neumann fundamental stuff. Wipe J2EE out of your mind for a moment. Think Bytes.

пятница, 20 января 2012 г.

Visual Studio Achievements, now a reality!


A year ago we posted a humorous blog post What if Visual Studio had Achievements?. It received great response which spurred a lot of new discussion about various funny and informative gaming-like achievements.
Guys from Microsoft’s Channel 9 took this idea seriously and developed it into a quite real Visual Studio Extension. They’ve launched the beta today, be sure to check it out. Here’s also an introduction from Microsoft’s Karsten Januszewski and the project home page contains a list of all the current achievements.
Unlocked an achievement

Currently unlocked achievements

Download Visual Studio Achievements BetaProject Home Page – check the list of achievements

Original is here

вторник, 17 января 2012 г.

Error Code: S1023 while installing DirectX SDK


Check your temp folder (C:\Users\%name%\AppData\Local\Temp) for the most recent file named

Microsoft Visual C++ 2010 x64 Redistributable Setup_20110608_xxx.html ##

and check if you have the following error
Installation Blockers:
A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on the machine.
Final Result: Installation failed with error code: (0x000013EC), "A StopBlock was hit or a System >Requirement was not met." (Elapsed time: 0 00:00:00).
then go to Control Panel>Progran & Features and uninstall all the

Microsoft Visual C++ 2010 x86/x64 redistribuable - 10.0.(number over 30319)


Taken here

суббота, 14 января 2012 г.

Debian links

http://jedi-linux.blogspot.com/2007/09/2.html
http://etoweb.net/node/247
http://www.debian.org/doc/manuals/debian-reference/ch02.en.html#s-boot
http://mydebianblog.blogspot.com/2007/10/blog-post_29.html
http://mydebianblog.blogspot.com/2008/02/debian.html
http://mydebianblog.blogspot.com/2006/07/blog-post_12.html
http://forum.oszone.net/thread-224262.html

http://gtk-apps.org/content/show.php/ctrlwm?content=114565 - тулза для растягивания окон при перетаскивания на границу экрана.. не тестил пока


Ну и в добавок, несколько разнообразных ссылок:

http://www.goodfon.ru/ - хорошая подборка нескучных (с) обоев
http://psdcollector.blogspot.com/2011/01/35-awe-inspiring-digital-art-wallpapers.html - туда же

http://b44.ru/test/slogatel/index.php?formula=131%2B020+130%2B120 - генератор забавных имен, в геймдеве всяко пригодится :)

http://www.ebdb.ru/ - электронная библиотека

вторник, 10 января 2012 г.

Virtual Air Guitar Company

Joined this great team (http://www.virtualairguitar.com/). Expect lots of fun and producive work.
Working on project like this