вторник, 14 апреля 2015 г.

Tutorial – Rotate an object by mouse in UE4 

(English version)
Yuriy "yurembo" Yazev
Independent gamemaker

For the first, excuse me for my bad English, I would tell about this.

In many games (especially in MMORPG) in Main Menu there is a “Create Character Screen” where a player creates his character. And this character rotates for Y-axis. If a player moves a mouse cursor with a left mouse button pressed around an object, it rotates according a mouse cursor. This case a player can see an object’s side he wants.
In this tutorial I tell about how to make a rotatable object in the 3d scene. In my example this object is rotated around Y-axis (Yaw), but you can make it’s rotation around X or Z axis. You should know an object rotation doesn’t refer to UMG.
Next pic I show a full Blueprint func:


Ok, let’s begin to dig in this program step by step. The first thing we need an event executes when a mouse is clicked by an user. As you know in UE4 every objects has an OnPressed event. But we will program a Level Blueprint graph. This is useful for us because we can control every object in the scene. But in this way we don’t have an OnPressed event. So we can add this very simply. Open up Project Settings (Edit -> Project Settings), in this menu click an Input item on the left side, then click on the plus button next to an Action Mapping item on the right. Then expand this item. You will see a text field, you should input an event name. In my case this called MouseClick. Under a text field you see a combo box which contains events of input devices. Then you’d expand a Mouse item and choose a Left Mouse Button event. Next pic you will see my case:


Now we can return to Level Blueprint and create this new event from a right mouse button menu.


As you can see this block has 2 outputs: when Pressed occurs and when Released occurs. We need a Released event. So when does Pressed occur? This event should occur when a player clicks on a rotatable object. So for the first time after an import a 3d model we need to make a class for this model. To begin we need to create a new Blueprint class which inherited of an Actor parent class, after that, double click on it and an editor windows will open. Switch to Components inset and drag a 3d model from Content Browser to this window on Components panel. Well, rename a new object and Blueprint class. You can apply some materials to this model. Next you should switch to Graph inset. Firstly we should add new variable of bool type. I called this “canRotate” cause this variable will allow or not to a user rotate an object. This variable will connect to our new sub-Actor class. Then right click on Graph space and choose Event Actor on Clicked from the context menu. This event will occur when a player press our object. OK, next drag and drop a canRotate variable from a panel to a Graph space. A context menu will appear, choose Set item from this. A new block will appear. Check canRotate and connect this block with an Event Actor on Clicked event.


Note you should click on an eye next to canRotate variable in the panel. It will be yellow. This action makes public variables. And the code from another Blueprint can use these variables.
We should return to Level Blueprint again. Add two variables: “delta” of float type and “tank” of reference to new created class 3d object.


In this graph we already have one block – InputAction MouseClick event. Next from Released node drag out a fiber to create “set canRotate block”. It must check off a rotatable object’s canRotate variable.


Look out, this block has a Target property because the engine should know what object’s variable to change. We made a variable which referenced to a 3d object in another class. This variable called “tank”. Let’s drag this to a Graph. Choose “get” from a context menu. Then bind “Target” with “Tank”. Now we need to know mouse coordinate position. To get this create Get Player Controller block which returns a user control object. Drag this out and create Get Input Mouse Delta. This Function returns a difference between last mouse position and current. This is what we need!


If we apply this value to an object rotation, it will rotate very slowly. Then we need to multiply this value to -10. A negative value is needed to rotate an object to an opposite direction.


Now we can build a rotator. To do this we should use a Make Rot function, find it in the context menu. Bind a multiply result with an Yaw input of this func. After that bind a result of Make Rot with input A of a Combine Rotators func. The second value of combine operations should be a current object position in a 3D space. So create Get Actor Rotation from the context menu. Note a target to this func should be a tank as ever. A return value of a Combine Rotators is a complete rotator which we can use to rotate our 3d object. So we need to make a new func “Set Relative Rotation” from the context menu. This func needs a target, you know this should be a tank, if you drag a fiber from a tank to this block, Blueprint makes a conversion automatically.


Now we should roll back little. As you see now “Set Relative Rotation” func doesn’t get a control. So we need to create a new event: Event Tick which called every tick. This event calculates a logic branch where a condition is canRotate value. If it is true then a control is passed to “Set Relative Rotation” func. And this func is rotates our object. We saw an one way of an execution of our program when an object rotated by mouse move.


The second way an object rotates by itself inertia. When a player release a mouse button a mouse speed (delta) stores in a variable. And an object rotates with this speed. Ok, when does our program store a delta (speed)? After an execution of a “Set Relative Rotation” func control is passed to logic branch and if canRotate is true, a program changes a value of a delta variable which we defined early.
If a condition after an Event tick is false, our program executes another “Set Relative Rotation” func which get another parameters. Now a delta is took up from a variable “delta”. Other operations are the same: Make Rot, Combine Rotators, Get Actor Rotation and in the capacity of the target is a “tank” variable.


Note a delta variable has an initial value. This allows an object rotates from begin of a program execution. Then an user can change a speed and a direction of a rotation.
So now we examined a rotation of an 3d object in the 3d scene completely.

If you’ve got questions, ask me in comments.

Thank you for reading!

P.S. I search a job in GameDev

понедельник, 13 апреля 2015 г.

Microsoft Developer Tour 2015

 Юрий “yurembo” Язев 
независимый игродел

В субботу в Перми в Камском порту прошла конференция разработчиков программного обеспечения, проведенная корпорацией MicrosoftКонференция была устроена в рамках тура Microsoft Developer Tour, в течение которого, начав 18-го марта в Санкт-Петербурге, докладчики на специально-оборудованном трейлере (прям, как рок-группа) проедут по России и ближайшем зарубежье, выступая с лекциями в крупных городах. Таким образом, 11-го апреля они были в Перми. А закончится тур 28-го апреля последней конференцией в Астане (Казахстан).

Трейлер Microsoft

Место проведения было выбрано очень эпическое.


Вход

Программа конференции была довольно насыщенная: в 9:00 начало регистрации, а с 10:00 до 18:00 – доклады. В общем количестве, было 11 лекций, между каждой перерыв, кроме того за счет Microsoft был обед для всех участников, а во время перерывов раздавали печеньки с чаем/кофе. Все доклады можно логически разделить на 5 частей: разработка приложений для Windows 10 с помощью различных средств; затем, после обеда, игрострой – в этой части только одна лекция – поверхностный обзор Unity 5; после этого разработка для web; анализ данных – тоже только одна лекция и облачные технологии. Расписание всех докладов можно увидеть на фото ниже.









Всех желающих пускали в трейлер. Там можно было увидеть разные устройства под управлением Windows 10: от смартфона и планшета до ноутбука и компьютера. Поиграть в Xbox One, только никто не играл. На стенах висели постеры игр.



Однако, что-то этот трейлер совсем не похож на жилой автобус.

Прикольно было встретить некоторых бывших, как и я сам, студентов когда-то родного университета ПНИПУ. 

В завершении, была сделана общая фотография всех участников конференции на фоне трейлера Microsoft.


четверг, 9 апреля 2015 г.

Экскурсии в музеи Чусовского района


Юрий “yurembo” Язев
независимый игродел


На днях yurembo с вып. редом "Хакера" совершили экскурсионные поездки в имеющиеся в Чусовом и районе вокруг него музеи.

Первое примечательное место, куда нас завела судьба, ну, не совсем судьба, но история об этом умалчивает, оказался Успенский мужской монастырь. Хотя монастырь мужской, женщины, неожиданно, там тоже присутствуют. Но речь не о них.

По левую руку от забора вокруг монастыря раскинулось Успенское кладбище.

Вход на территорию монастыря свободный; на ней находится ряд построек. Сразу при входе за врата по левую и правую стороны расположены аграрные здания, попросту говоря, какие-то сараи. Минуя их, открывается красивый, более того, удивительный вид (см. фото). Здесь, так же присутствуют небольшие, очевидно, жилые домики.





Мимо нас проходили монахи и монахини. Делая фотографии, я спросил у одной монахини, можно ли делать снимки. В ответ я получил кивок головой, надеюсь, я правильно интерпретировал ответ, продолжив фотографировать. 

Так как, никто не пытался нас остановить, мы зашли в церковь. Там, в общем-то, была обычная для таких заведений обстановка. Но, всё-таки, нельзя не отметить красоту, присущую этому месту. Обратив внимание, на старую, но написанную подозрительно свежими красками икону Григория Победоносца, нас уверили, что она от 16-го века. В противоположном от входа конце церкви над церковным пьедесталом, где лежит библия, располагается высокий потолок, сделанный в виде конуса, отчего в этом месте прекрасная акустика. «Вот, бы здесь включить Manowar…» - сказал yurembo. Сидящая в углу монахиня перекрестилась, а мы поспешили покинуть помещение.

Как оказалось, в Чусовом много интересных мест, куда можно совершить экскурсии, однако, самым выдающимся бесспорно является спортивная школа Олимпийского резерва «Огонёк», где тренировались и тренируются спортсмены самого высокого мирового уровня. Кроме впечатляющих спортивных сооружений, рядом с «Огоньком», на другом берегу горной речки Архиповка, находится Этнографический парк истории реки Чусовой, так же, как и школа, основанный Леонардом Постниковым. До последних дней Леонард Дмитриевич работал над парком, сохраняя историю и рассказывая ее подрастающему поколению, он собирал экспонаты для музея под открытым небом со всего Чусовского района: из самых глухих деревенек и сел, в итоге, создав поистине уникальную коллекцию, состоящую не только из вещей старины, но и старинных построек, сохраненных и возведенных в парке.

Сейчас, наследием Леонарда Дмитриевича занимается его дочь Постникова Ольга Леонардовна.

В прошлом (в конце 90-х) я много раз бывал в этнографическом парке, но потом, в одно мгновение жизнь, ценности и взгляды – все изменилось, и я многие годы там не был.

Об экскурсии необходимо договориться заранее, позвонив в администрацию парка, поскольку, надо определить время с экскурсоводом. Телефон и расценки экскурсий можно узнать на сайте парка: http://etnopark.com/index/excursion/0-14. Замечу, цены очень символичные.

Гулять по парку, безусловно, интереснее с экскурсоводом, она может рассказать многое из истории Чусовских земель, обо всех экспонатах, истории создания парка и истории жизни Леонарда Постникова.

Мемориал

Мемориал

Мемориал

"Катюша"




Первое помещение, куда мы зашли, был музей Ермака. Многие находящиеся здесь экспонаты оригинальные. Картины на стенах, рассказывающие о похождениях Ермака и его свиты были нарисованы знаменитым русским художником Шардаковым. Леонард пригласил его, чтобы он нарисовал только одну икону, но художник так вдохновился этим местом, что остался в парке на 6 лет!


Статуя Ермака Тимофеевича выполнена уже в наши дни.



Кольчуга и оружие датируются 16-м веком

Ниже представлен макет поселения Верхних Чусовских городков. 


            Ныне это поселение не существует, так как было затоплено в 20-м веке при строительстве Камского водохранилища.



Ниже представлены деревянные игрушки, в том числе особо нас порадовавший медведь-программист:





Деревенская лавка с кучей самоваров и утюгов:








Деревенский быт, в том числе домашняя библиотека:






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


Третье историческое место, куда мы решили сходить, оказался музей В. П. Астафьева. Опять-таки, проживая всю жизнь в Чусовом, мне никогда не приходила мысль сходить туда. Но, как оказалось, Астафьев – это не только «Васюткино Озеро», входящее в школьную программу по литературе, но и множество других прекрасных и интересных рассказов, благодаря которым он широко известен в России и за рубежом. Поэтому, зная, что Виктор Петрович начал свою литературную деятельность в Чусовом, гостю нашего города интересно узнать подробности и посетить дом Астафьева. А, мы – чусовляне каждый день проезжаем мимо его дома, следуя на «Огонёк» или Красный поселок и, по сути, не обращаем внимания - обыденность. Астафьев на протяжении 17 лет жил в Чусовом и был хорошим другом Леонарда Дмитриевича Постникова.

Экскурсия протекает в два этапа – в двух помещениях. Для ее проведения так же необходимо договориться заранее. Номера телефонов и другую дополнительную информацию о музее и экскурсиях можно узнать на сайте: http://www.astafiev.permkrai.ru/?obj=4&f=0 . В данное время, экскурсия бесплатна.

Первое место, откуда, собственно, начинается экскурсия – это подвал дома №38 по улице Фрунзе, по легенде в этом подвале во времена жизни Астафьева в Чусовом располагался колбасный цех, который сторожил Виктор Петрович. Именно здесь по той же легенде Виктор Петрович написал свой первый рассказ «Гражданский человек»  – противоположность, несогласие с повестью о войне другого уже известного автора Ивана Реутова. Правдивостью и искренностью всегда отличались рассказы Астафьева. В этом месте хранятся вещи, в свое время принадлежащие Астафьеву. Представлены книги Виктора Петровича, переведенные на другие языки и изданные в зарубежных странах.


















Скрипка, показанная на фотографии, является произведением чусовского мастера Юрия Ситнова, который создал 40 скрипок. Его портрет ровно, как и других выдающихся людей Чусового, весит на стене (см. фото). Эти люди побудили Виктора Петровича написать рассказ «Гении Чусового». Каждый имеющийся в «этом подвале» экспонат прямым или косвенным образом связан с какой-либо повестью Астафьева, то есть отражает какие-то переживания и жизненные периоды автора. Например, экспонат «Царь-рыба» соответствует одноименному рассказу, который отражает любовь Астафьева к рыбалке.

Затем, во главе с экскурсоводом мы двинулись к дому места жительства Астафьева. В Чусовом Виктор Петрович жил в нескольких местах, однако, в качестве музея было выбрано только одно. Продолжительность пути около 300 м.


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





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


В конце экскурсии наш гид сказала нам: «Если ваша деятельность связана с авторством, то после посещения дома, где жил Виктор Астафьев, ваше творчество возрастет вдвое». Определенно, так оно и есть!