tag:blogger.com,1999:blog-31284684990189597092024-02-12T06:36:48.649-08:00Kostiantyn Dvornik :: Ideaskostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.comBlogger256125tag:blogger.com,1999:blog-3128468499018959709.post-6770129104061546622021-01-09T03:43:00.006-08:002021-01-09T04:19:23.340-08:00<p style="text-align: center;"><b>Prototype Library</b></p><p><i>Name and Version Number: </i>Dance like an animal</p><p><i>Date of Creation: </i>10.2020</p><p><i>Design Questions the Prototype is Meant to Explore: </i>вовлеченность игроков и сопротивление танцам, веселая замена крокодилу + парный танец ;)</p><p><i>Lessons Learned From Prototype: </i></p><p></p><ul style="text-align: left;"><li><i>Категория динозавры слишком привлекательна и слишком сложна.</i></li><li><i>В остальных категориях игроки загадывают слишком простых животных.</i></li><li><i>Ведущий не нужен</i></li><li><i>Игроки забывают про инвентарь и он мало используется ( из-за сложности )</i></li></ul><p></p><p><br /></p><p><b>Test Log (1): </b></p><p><i>Playtest Date: </i>10.2020</p><p><i>Playtester Names: </i>Михаил, Дарья, Валерий, Никита</p><p><i>Notes from Playtest: </i>Не нужен ведущий, Расширить инвентарь и скилы. Больше взаимодействия с инвентарем. Червис слишком сложная категория</p><p><br /></p><p><b>Test Log (2): </b></p><p><i>Playtest Date: </i>25.11.2020</p><p><i>Playtester Names: ???, Богдана Зиенко, Валерий Петров.</i></p><p><i>Notes from Playtest: </i>Слишком простые слова загаданы, Подходит для TikTok, Не используют инвентарь, Весело :). У некоторых игроков возникал диссонанс от того, что их слово угадывали слишком быстро, не дав как следует 'растанцеваться'. То есть, одна награда (выразительность в танце) входила в противоречие с другой (скорейшая победа). Если игра про танцы, то им нужно постараться уделить больше внимания.</p>kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-8308080197828300642021-01-09T03:38:00.000-08:002021-01-09T03:38:38.134-08:00Game idea: Dance like an animal<p><b>Цель игры</b>: хорошо показывать слова в танце не оставшись последним. </p><p><br /></p><p>Перед началом игры каждый загадывает соседу слева слово по теме животные в таких категориях:</p><p>скотина, птицы, рыбы, питомцы. </p><p><br /></p><p>На старте каждый участник тянет радомную способность из колоды карт. В инвентаре максимум одна способность.</p><p><br /></p><p><b>Способности</b>: </p><p><i>узнать категорию, </i></p><p><i>узнать букву ( в зависимости от того какие уже известны ), </i></p><p><i>поменять слово, </i></p><p><i>не танцевать на ходе, </i></p><p><i>украсть способность у другого ( при этом он тянет заново )</i></p><p><br /></p><p>Человек за 1 минуту под музыку совершает движениям ногами. Верхней частью тела показывает слово. Если человек не совершает движениями ногами, автоматически переходит на следующий ход. Если слово человека угадали, то он выбывает и может подарить возможность любому участнику потянуть с колоды способность. Может и не дарить. Есть возможность выступать парой, тогда все так же 1 минута. Участники выбывают если оба слова угаданы, но танцут оба даже если одно слово не угадано. </p><p>Тот чье слово не угадали в следующем раунде пропускает 1 ход.</p><p><br /></p>kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-5186284056789871142020-12-03T14:38:00.003-08:002020-12-03T14:40:02.260-08:00Skonny Privacy PolicyPrivacy Policy<br /><br />Doctrina built the Skonny app as a Commercial app. This SERVICE is provided by Doctrina and is intended for use as is.<br /><br />This page is used to inform visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service.<br /><br />If you choose to use our Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that we collect is used for providing and improving the Service. We will not use or share your information with anyone except as described in this Privacy Policy.<br /><br />The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Skonny unless otherwise defined in this Privacy Policy.<br /><br />Information Collection and Use<br /><br />For a better experience, while using our Service, we may require you to provide us with certain personally identifiable information, including but not limited to level progress. The information that we request will be retained by us and used as described in this privacy policy.<br /><br /><br />The app does use third party services that may collect information used to identify you.<br /><br />Link to privacy policy of third party service providers used by the app<br /><a href="https://www.blogger.com/#">Google Play Services</a><br /><br />Log Data<br /><br />We want to inform you that whenever you use our Service, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our Service, the time and date of your use of the Service, and other statistics.<br /><br />Cookies<br /><br />Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.<br /><br />This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.<br /><br />Service Providers<br /><br />We may employ third-party companies and individuals due to the following reasons:<br />To facilitate our Service;<br />To provide the Service on our behalf;<br />To perform Service-related services; or<br />To assist us in analyzing how our Service is used.<br /><br />We want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.<br /><br />Security<br /><br />We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.<br /><br />Links to Other Sites<br /><br />This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.<br /><br />Children’s Privacy<br /><br />These Services do not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to do necessary actions.<br /><br />Changes to This Privacy Policy<br /><br />We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page.<br /><br />This policy is effective as of 2021-02-03<br /><br />Contact Us<br /><br />If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at kostiantyn.dvornik@gmail.com.<br /><br />This privacy policy page was created at <a href="https://www.blogger.com/#">privacypolicytemplate.net </a>and modified/generated by <a href="https://www.blogger.com/#">App Privacy Policy Generator</a>kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-89198466791115230462020-11-14T12:07:00.001-08:002020-11-14T12:07:35.191-08:00Phone's frontal camera usage during usual photo<p>Frontal camera of the phone can bring additional information about light condition during usual photo. Like overall lighting level and color correction. That can improve photo quality. Theoretically it is possible to determine light position with such info. Of course chromeball be more precision but anyway. Neural network can correct data with iPhone distance laser correlation. Also suitable with AR where frontal camera can bring poor but more realistic reflection to integrated 3D art into environment. Also we can store both photos for further more detailed post processing. </p>kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-37575264738018251502017-11-08T08:59:00.004-08:002017-11-08T08:59:57.075-08:00AI warMany Hollywood story writers describe war between humans and machines like fights robots against humans, but this is quite inefficient according to logic of machines. What if huge neural network already growing on clouds, servers, calculation ferms and do everything to change the way of humanity development. I mean it have no sense to destroy all the humanity it is inefficient. Remember how time you spent in the internet, phone, social networks.<br />
<br />
All that time you are wasting your life and become more and more controlled. Mobile phone make people ultra connected and of course controllable and inefficient. What if bitcoins or other cryptic money is just a way of parallel calculation for studying such a big neural network. Target commerce in the internet, advice and ads in searching engine everything is designed to change the way of life of humanity. So do you think machines need a blaster to control humans ?kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com5tag:blogger.com,1999:blog-3128468499018959709.post-54243207389556539282016-09-13T11:00:00.001-07:002016-09-13T11:00:50.067-07:00Game Idea Time Depend TutorialMost games have built-in tutorial system. It is extremely important to teach people playing your game.<br />
<br />
Of course your game should have intuitive design, not 5 buttons pressed at same time or stuff like this, but anyway after a long break there is a problem with common games:<br />
<br />
<b>You forget everything but game thinks that you previously learnt all the stuff according to game progress and not displaying tutorial again.</b><br />
<br />
Games like Risen all the time displaying help according to game situation. It is very cool, but harder.<br />
<br />
What if save previous game session real world time. And after entering new session calculate time difference between current and previous session and according to this information displaying game tutorial.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-45203016574268806652016-07-31T11:01:00.002-07:002016-07-31T11:01:18.805-07:00Why making games ?I made fucking games since I was 11 and never asked myself WHY ? To spent time, to have fun, to escape from painfull reality, to make money ? And since the long way have been passed, lots of things have been changed and life turned you into ways never dreamed but dreams still far away from you and then you came to deeper conlusion WHY ? There is something inside you never accept - chaos, disorder, injustice, evil around you and evil inside other people. Simple answer was born - for well fighting evil. That's why I love games with story rather gameplay or graphics...For the light in darkness. That's our goal and we will bring the light til we can.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-42555807768412456602016-07-19T04:40:00.005-07:002016-07-19T04:40:53.950-07:00300 000 views<div style="text-align: center;">
<b>Thanks for reading and writing.</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmE9pLCBxY8WFLnHsSNqejri62ZYeehdfRWyr-rr723M3HaeidIfFSTzFlOSi1hFJ4r8NMtwuAHbSrecb09Zb3XO_WH5viHpHUHZcTyGtMauCWjb2mzLlF_gmtxrZ9HmaxYwbnCBx7JNY0/s1600/300000.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmE9pLCBxY8WFLnHsSNqejri62ZYeehdfRWyr-rr723M3HaeidIfFSTzFlOSi1hFJ4r8NMtwuAHbSrecb09Zb3XO_WH5viHpHUHZcTyGtMauCWjb2mzLlF_gmtxrZ9HmaxYwbnCBx7JNY0/s320/300000.png" width="320" /></a></div>
<br />
<br />kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-6857215074452267432016-07-13T11:33:00.001-07:002016-07-13T11:33:09.202-07:00Network theory of everythingMatter is well explained as lots of smallest particles, but there is no proved well explained theory of a field. String theory is thing that could really help with it but looks like a special case anyway. So I suddenly composed lot of experience in different science fields and came to Network theory. It is extremely clear and simple, but powerful at same time.<br /><br />Main point:<br /><br />
<div style="text-align: center;">
<b>Everything consists of smallest elements and connections. </b><br /><br /><div style="text-align: left;">
That's mean that our matter is a networks of lots of elements and connections. Smallest particles is a elements and connections and the most extreme thing - physics of our Universe is a elements and connection. I suppose that exist Universe with absolutely different physics according to topology of a network. Even more our Universe is connected with such different Universe or can be a sub-universe.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Main things that came from this theory:<br /><br />- Everything is connected<br />- No random events, just hard reason events<br />- There is can be Universe where time travel or speed bigger than light is possible but we have no prove it is our Universe or not.<br />- Physics laws may change locally or globally, but obviously we can do it just for sub-networks. Our up-level network can change laws in our system.</div>
<div style="text-align: left;">
<br />Such theory guarantee that all laws is combined and exists more common law for each sub-Universe.<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHCWbyyUF2idtV0rrRFjPn42YU7Qa3Ayd6feRqrueURePNRWxOqxvFX65Ew0Hri2yaqGcdAj2-EZ3ixWbRqtx4JwiGvvH_Df0WuRoNOwx3Z7fE5rdhlhMMqH3SPkf9fTmutlntcS191QtK/s1600/whole_network7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="318" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHCWbyyUF2idtV0rrRFjPn42YU7Qa3Ayd6feRqrueURePNRWxOqxvFX65Ew0Hri2yaqGcdAj2-EZ3ixWbRqtx4JwiGvvH_Df0WuRoNOwx3Z7fE5rdhlhMMqH3SPkf9fTmutlntcS191QtK/s640/whole_network7.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: left;">
What is the element, connection and how this stored or looks like still not explained.<br /><br /></div>
<div style="text-align: left;">
<br /></div>
</div>
kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-54308419191746150212016-06-07T08:53:00.002-07:002016-06-07T08:53:31.792-07:00Customizable construction toysThinking about C# and how it build I decided that it looks like LEGO constructor where you can compound things as you want but can't customize each block. Then it was obvious to make constructor like Java made with each customizable block. Such toy can be done from wood materials with stamp for making connections to each other.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-13732213970402872102016-05-29T06:46:00.004-07:002016-05-29T06:46:54.942-07:00Voice recognitionMany people when they use something at first try to say something to computer or even device. I mean How to open new file ? How to shoot ( when playing games ) ? How to change batteries ? And it is obvious to use voice recognition for such limited phrases and based on such input print help and hints in game or even device. Can be done with neural networks or somehow.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-78641571952373093022016-04-30T01:41:00.000-07:002016-04-30T01:41:33.957-07:00Convert Code to Neural NetworksNeural Networks have lot of pluses ( and minuses of course ) but main of it ( as I think ) parallel computation. With power of modern GPU it can be delicious. What if create C++ code converter to neural networks. This task is not simple according to data limitations but possible. Some methods can be converted and will improve your code speed. Such converter is easy to make with methods that take simple types like float, int, bool and return same type, for other it can be more complicated I guess.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-40755015074776715162016-04-27T10:55:00.000-07:002016-04-27T10:55:27.347-07:00Playtest serviceThe most valuable feedback is seeing of first time playing your game. And it can be easily broken by giving people same game second time. They already know details so experiment will be not clear. <br />
<br />
What if create service that help indie and not indie developers to test games ( or apps ) and receiving feedback by recording screen, webcam and input of player. Each person have an account in such service and balance like money for example you can upload your game and receive 5 feedbacks, If you rich that limit you cannot receive feedback anymore.<br />
<br />
You can restore your balance by playing other developers games or paying money. The most important is to record screen and input so such service can be build in Steam or Windows Live.<br />
<br />
With such service you can test of first time playing many times instead of playtest group.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-27809061344108817142016-03-22T07:58:00.002-07:002016-03-22T07:58:12.131-07:00Unity AAA gameMany people think that is not possible to create AAA game with Unity, so they choose Unreal or Cryengine.<br />
<br />
But what defines AAA game - graphics quality, hardcore features - nope. <br />
<br />
Probably first thing - money. If you have no budget you can forget about AAA.<br />
<br />
Next thing - size. You can't create small mobile look AAA game. So does Unity restrict you to make big games - no. You can make as much levels and worlds as it possible. Next thing - atmosphere: if you have lame designers you can't do AAA things in Unity or Unreal or Cryengine at all and it is not a problem of engine - it is a problem of people. Next thing story - with high budget storywriters you can do magic and even not well done games can be hits: like Witcther 1 or modern Life is Strange. Awesome music it is also the part of the game.<br />
<br />
I'm not telling that Unity have no limitations. For example huge open worlds it is not what Unity doing well. For such games Cryengine is better for now. So with small limitation it is absolutely possible.<br />
<br />
So why there is no AAA game on Unity. Because of lack of experience. Unity is easy to start game engine, so many beginners start to use it, doing shit and say that its a fail of engine. They disappoint and start other engines. Also they forget that time is passing and their skill is growing up. So they make their AAA game at age of 30 as it should be.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-1652982922928830452016-03-16T04:39:00.002-07:002016-03-16T04:39:46.872-07:00Pure MVC with Unity<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/MVC-Process.svg/2000px-MVC-Process.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/MVC-Process.svg/2000px-MVC-Process.svg.png" width="290" /></a></div>
Many new Unity users asked but is very simple to make pure MVC:<br /><br />1. Use only one Root object with Monobehaviour inheritance like start point of whole application<br />2. Inside this Root object process everything in custom Models that can or not be associated with some GameObjects in scene via Find<br />3. Access prefabs from Resources and keep everything in Resoure folder + Constants file<br />4. Separate Contoller like event base non-platform specific event system to process input.<br /><br />Thats it.<br /><br />But it makes a lot of troubles working with juniors and designers that want to contoll parameters from the editror not in text file. Solution is to mix MVC with the way Unity propose to code. Like make process code in models and associate it with some kind of data container that inheritance from Monobehaviour and placed on GameObject.<br />kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-8595571916526926462016-03-14T03:30:00.001-07:002016-03-14T03:30:28.621-07:00Particles Tutorial Unity<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/zzYnrbFXn3E/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/zzYnrbFXn3E?feature=player_embedded" width="320"></iframe></div>
<b><i><br /></i></b>
<b><i><br /></i></b>
<b><i>Note:</i></b> <i>Advanced tutorial</i><br />
<br />
Hello again. Today we are going to make this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://img05.deviantart.net/3fcc/i/2016/063/b/3/nuclear_explosion_by_kostiantyn_dvornik-d9tvwzb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://img05.deviantart.net/3fcc/i/2016/063/b/3/nuclear_explosion_by_kostiantyn_dvornik-d9tvwzb.png" height="294" width="640" /></a></div>
<br />
When I wanted to add nuclear explosion into Skyship Aurora i was thinking that i could find some really good examples on market or even free. I was surprised that i have not found anything that satisfied me. So I started experiments. First I tried to learn existent prefabs on market. It was fun because all existent nuclear explosion was not real world scaled, so I need to manually scale them for real world ( yes i know that there is available particle scaler script :) ). Second problem - they was extremely complicated, used a lot of sub particle emitters and invisible psys. So I just leave it and start from 0.<br />
<br />
Ok by steps:<br />
1. Separate complicated effect into smaller parts ( dust at the ground, stipe, mushroom head )<br />
2. Setup particles for each individual part ( circle psys for ground dust, simple up emitter for stipe and sphere emitter for head )<br />
3. Have done effect when explosion is ready and mushroom head on the top.<br />
<br />
Tada.<br />
<br />
But this was the simplest part. The hardest part was explosion behaviour. I mean:<br />
<br />
1. Big light<br />
2. Dust on the ground<br />
3. Fire ball rising up with a stipe<br />
4. Fire ball turns into dust mushroom head<br />
<br />
So I watched all the videos on you tube with nuclear explosions and also look in-game one like Call Of Duty Modern Warfare 4 ( my favourite ).<br />
<br />
I start experiments and found out the the most simple way to make it - use animation and scripts, instead of hardcore Shuriken functionality.<br />
<br />
<b>1. Big light</b><br />
It was easy - point light with well setuped lens flare that I took from Unity Free Lens Flares. And control it by animation, It is about 5 second duration of big light<br />
<br />
<b>2. Dust on the ground</b><br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidKjzQE5ruHayI9Zb-aZBm6bEiY3B_A6p_6zi-ZTF6fF_QbfwsZ310nyCsbnsS4LUVTU5v9T3kQx8oXq9nmKardKjWrriO0ai97iww8fCbnHCbvHSC14TSGMaxNNktp_xEreTQRlbFDrcE/s1600/maxresdefault+-+Copy.jpg" imageanchor="1"><img border="0" height="257" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidKjzQE5ruHayI9Zb-aZBm6bEiY3B_A6p_6zi-ZTF6fF_QbfwsZ310nyCsbnsS4LUVTU5v9T3kQx8oXq9nmKardKjWrriO0ai97iww8fCbnHCbvHSC14TSGMaxNNktp_xEreTQRlbFDrcE/s320/maxresdefault+-+Copy.jpg" width="320" /></a> </div>
<div style="text-align: left;">
<span style="text-align: center;">Sounds easy but it was not in fact. I haven't found any way to make it with one psys so i made it with 2 Circle Edge emmiters with different start particle size. Also I setuped order layers to make it correct appearence and changed sorting mode to youngest first or oldest etc. Spawn most of them before big ligt over.</span></div>
<div style="text-align: left;">
<span style="text-align: center;"><br /></span></div>
<div style="text-align: left;">
<b>3. Fire ball rising up with a stipe.</b></div>
<div style="text-align: left;">
Stipe - simple emmiter with up rising dust. Tune lifetime to contol height of the stipe.</div>
<div style="text-align: left;">
<b><br /></b></div>
<div style="text-align: left;">
Fireball is a sphere particle emmitter with random start color generation from red to yellow and small life time to make burning effect.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
How to make it move together - make it via animation. Simply move fireball up according to stipe evolution</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<b>4. Fire ball turns into dust mushroom head.</b><br />
<br />
The hardest thing of the effect.<br />
<br />
Fireball was easy - sphere emmiter with random between two color generations adds burning effect well.<br />
<br />
Dust of the mushroom head was a little bit harder -<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk1z_-H5vipaDhG0SrHGl85yzCTwdpHtcWHdIjyb5JFmxyEdTmQwV7sGxcd9SEU9jGOPmj_uXaVdxWAJoMECgDZAUCXo6hI1qSI5nNQemkcYnVFohhq_gdGWXOonvnP2JX1BizS99EpHaW/s1600/Bomba_atomica.gif" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk1z_-H5vipaDhG0SrHGl85yzCTwdpHtcWHdIjyb5JFmxyEdTmQwV7sGxcd9SEU9jGOPmj_uXaVdxWAJoMECgDZAUCXo6hI1qSI5nNQemkcYnVFohhq_gdGWXOonvnP2JX1BizS99EpHaW/s400/Bomba_atomica.gif" /></a></div>
<div style="text-align: left;">
<br /></div>
As you can see moving of the head dust is quite interesting - starting at the top of the head move down via gravity and turn up later for different pressure reason. How to do it:<br />
<br />
1. Make sphere emmitter and emmit from the edge with some start speed<br />
2. Add gravity multiplier,<br />
3. Add force over lifetime curve : adding positive Y( in the world ) force to the particle later<br />
<b><br /></b></div>
<div style="text-align: left;">
And of course I thought it be easy - I was wrong. What I think I will do - control start fireball random colors into sorts of grey. And what have I've got -<span style="color: red;"><b> I can't control random between two colors property with animation. </b></span></div>
<div style="text-align: left;">
Ok I thought lets do it via code, not again this properties is kinda private. Not a problem let's do it via reflection - no way. Common how you did it ? Editor have access, code no. The only way is to use serialized properties that part of the UnityEditor namespace that you can't use in stand alone builds<br />
<br />
OK lets make some chunk.<br />
Create separatly fireball and dust ball and somehow blend one into other. Use separate material and control alpha material colour through the script. Just increase dust alpha, and decrease fireball material alpha. When you will see only dest destroy fireball object.<br />
<br />
Of course tuning of the effect took some time, 4 days in fact - blending time and colour transition.<br />
<br />
<b>5, Lighting of the particle</b><br />
<b><br /></b>Lighting is our everything. When I made first prototype of the explosion I found lack of lighting and it was hard to fix it via standard resources i mean billboards can't be realistically lighted at all. So having experience in afterburn and FumeFx I tried to make everything with small spheres that have standard Unity 5 skyboxed lighted shader and fade out mode. Of course it give some 3D look and correct light but spheres looks to much like spheres and I make about 200 spheres and it was not enough, and by the way even with small spheres the looks not so good because just of local ligthing, no global. For global I need shadow casting that can be little bit too much for 200 spheres and such distance. So I leave that idea for a moment, but later I think I will back to it.<br />
<br />
So what do we have - colour control to simulate lighting.<br />
I mean after explosion rising up fire sphere create a lot of light that we need to simulate for making effect more real. It was easy I just control particle start colour of inner-outer dust circle to make them brighter or darker during life cycle.<br />
<br />
<b>Summary</b><br />
This effect is kind of not physically but artist based controlled via animation and script. I thinks that it is possible to simulate such effect in much more physically base soft and use simulation data in game or render. With such realisation it can be even more realistic with couple of blast waves, that you can do with distortion shader here:<br />
<span style="font-size: x-small;"><a href="http://kostiantyn-dvornik.blogspot.com/2014/06/interesting-advanced-particle-tutorial.html">http://kostiantyn-dvornik.blogspot.com/2014/06/interesting-advanced-particle-tutorial.html</a></span></div>
<div style="text-align: left;">
<br />
And add shock wave of dust after it. That's not so complicated so I leave it to you :)<br />
<br />
Thanks for reading.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/2S1sQzH4RnI/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/2S1sQzH4RnI?feature=player_embedded" width="320"></iframe></div>
<br /></div>
kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com1tag:blogger.com,1999:blog-3128468499018959709.post-74815399566973399282016-02-27T02:32:00.004-08:002016-02-27T04:33:47.187-08:00AI Koi fish behaviour I was watching 3 Koi fish in aquarium for quite long time and found out that fish behavior is not simple.I was thinking before that fish have a smallest amount of neurons, so their behavior is pretty random. But thats not true with Koi. This behavior can be used in video games or simulations. Maybe some day i will made it with unity or you can use it for any underwater creatures.<br />
<br />
So what parameters fish have:<br />
<br />
sex - male and female<br />
activity - passive, active<br />
long time memory<br />
mood<br />
hungry<br />
<br />
What they can do:<br />
<br />
- Swim slowly ( maybe random I don't figured it out )<br />
- Swim fast<br />
- Sleep at bottom<br />
- Eat<br />
- Find food<br />
- Find food on bottom<br />
- Male follow female with high speed<br />
<br />
How parameters affect actions:<br />
male follow female periodically<br />
active male follow female, passive not<br />
passive swim slowly most<br />
they remember the most often place of feeding and at time of big hungry swim to that place<br />
if they have bad mood ( was damaged ) they swim slowly most<br />
if they are not hungry they not looking for food<br />
Sleep when its night time<br />
Active are much bigger<br />
<br />
This actions can be triggered by neural network or just randomly in simplified AI model.<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsa4n4PR3I10a3urvoh3vDjTm0FABdyIdD0ZKkX6hoA6NNE0Rtl1Rj04Py9ppfFD9z_WtFhHh-doa88Dk3qyS4mKJmm4Yx6NlJ8UcdgAVZGs8GWdY3aZQJpmiEdYb3f9ISflGXCaTXrRm_/s1600/Koi.png" imageanchor="1"><img border="0" height="392" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsa4n4PR3I10a3urvoh3vDjTm0FABdyIdD0ZKkX6hoA6NNE0Rtl1Rj04Py9ppfFD9z_WtFhHh-doa88Dk3qyS4mKJmm4Yx6NlJ8UcdgAVZGs8GWdY3aZQJpmiEdYb3f9ISflGXCaTXrRm_/s640/Koi.png" width="640" /></a></div>
kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com1tag:blogger.com,1999:blog-3128468499018959709.post-28981227157957645582016-02-25T09:56:00.001-08:002016-02-25T09:56:39.995-08:00Interesting procedural generationProcedural generation is common thing in computer industry. Procedural terrains, procedural quests, procedural weapon. But one thing that have all procedural things - they are boring. Boring terrains, boring quests, boring weapon. And it obvious, because any procedural generation have Gaussian distribution law that boring too. They only way to make procedural things interesting apply some rules like generated fractals, cool terrains with erosion. But anyway they boring as boring rules. But why this world, this life is not so boring ( commonly ) because rules applied many times and they are very balanced, that not destroying whole system just modify it. I found it when make some Neural Network Animation. This rules in real life - Physics, they applied at any very small part of the world and affect big huge connected structures. Creating such rules is not easy stuff they should be balanced, so creating random things like weapon or room in dungeon crawler is a same work as premade prefabs. Balance :)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglOPbqFliOYZOuX32R8KGziiIFsIWPc9U8_lzfwN3BvHuaUuADavW837HHJ3wfgjVDnUjY9BipUl4L-BXLcDU4CtN0Dwr2gd_EsVpG9_LoA8QG750SIHPIsRB1W4vKfNzVBNO3h8kGGicN/s1600/result.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglOPbqFliOYZOuX32R8KGziiIFsIWPc9U8_lzfwN3BvHuaUuADavW837HHJ3wfgjVDnUjY9BipUl4L-BXLcDU4CtN0Dwr2gd_EsVpG9_LoA8QG750SIHPIsRB1W4vKfNzVBNO3h8kGGicN/s640/result.gif" width="640" /></a></div>
<br />kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-43910850069286813602016-02-22T11:00:00.000-08:002016-02-22T11:00:01.003-08:00Re-Thinking 3DWhen I started 3D ( modeling, texturing ) etc. I thought that mesh makes the most visual impact. I was trying hard in ZBrush etc., when making rocks and stuff like this. Then make high detailded 3d terrains. But they was not so good. I leaved 3D later.<br />
<br />
During making of Skyship Aurora we make sattelite based terrains and I found out that not detailed shape of heightmap is not a big problem. Seriousle the most important thing is texture because of lack of real lighting in the game we can use just use high detailed prebaked textures. I turned back to the laser scanned images and found out that time a lot of models now available at Sketchfab. I found this and understood that even grass can be look realistic withour actual grass just a texture:<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUNgXDZST3CX5nT_Lrzdb53VAVPuLVxCXXwai666w9EtLl3q3MM0w-exq9E3EQpWwfOmW7ZbcNOlviFSlTYD7A07NIv2-mE8GuKZ0qwQgz5zJBetYbwkQ6ShTtyOqRA08qguFSccYqks1a/s1600/Grass.png" imageanchor="1"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUNgXDZST3CX5nT_Lrzdb53VAVPuLVxCXXwai666w9EtLl3q3MM0w-exq9E3EQpWwfOmW7ZbcNOlviFSlTYD7A07NIv2-mE8GuKZ0qwQgz5zJBetYbwkQ6ShTtyOqRA08qguFSccYqks1a/s640/Grass.png" width="640" /></a></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHTq5AyhpQPzixNbnX-diQbKx-bUvTpCJPqXpJi3ri_Amu-zStKkSnkgN_Rv-i57a9Ux1XPwOk3_778xt_6lPjWEVeJCXXXCUWFm2QgU3xDh0QIUfIg5vgr2KkbdB7U31y28z1S8oPwfAx/s1600/Wire.png" imageanchor="1"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHTq5AyhpQPzixNbnX-diQbKx-bUvTpCJPqXpJi3ri_Amu-zStKkSnkgN_Rv-i57a9Ux1XPwOk3_778xt_6lPjWEVeJCXXXCUWFm2QgU3xDh0QIUfIg5vgr2KkbdB7U31y28z1S8oPwfAx/s640/Wire.png" width="640" /></a></div>
kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-36319669585309231402016-02-21T02:55:00.000-08:002016-02-24T06:11:05.913-08:00Skyship Aurora Make it huge<div class="separator" style="clear: both; text-align: center;">
<br /><iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/8nkaJem_UsQ/0.jpg" src="https://www.youtube.com/embed/8nkaJem_UsQ?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicCi80Fly_1_Tt3H8k4rZ29zfD-f7MdnEjUkp3_fxnM7Bj_KG3-ixwUgGIdAyVlr6vX-U5aehPC7ARVRdli_sboEtQDDCtopprdVJVJHyQ_2NmGOPL7FGJD6vgHCBTNjN7zsgXqLJh33Dp/s1600/MakeItReal1.png" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicCi80Fly_1_Tt3H8k4rZ29zfD-f7MdnEjUkp3_fxnM7Bj_KG3-ixwUgGIdAyVlr6vX-U5aehPC7ARVRdli_sboEtQDDCtopprdVJVJHyQ_2NmGOPL7FGJD6vgHCBTNjN7zsgXqLJh33Dp/s640/MakeItReal1.png" width="640" /></a></div>
<br />
One of the special thing about Skyship Aurora - huge size. I mean ship really big and terrain is huge, you fly at 7km altitude . Of course Unity is mostly madden for middle size games like FPS, racer games, 2d platformers. We don't want to scale down whole game like most people do when they making space games with actual not realistic size, multiplied by 0.01. In such scaled world people feel difference specially if game use real physics like Aurora do. Also camera perspective correction make toy effect. So just do it as is. <br />
<br />
First big problem was terrain. Huge large scale terrain was a big performance problem of the game. We tried to use repeated built-in terrain to cover the ground, because at 7 km you see really a lot of the things. Anyway it adds about 400 draw calls that was not awesome, also it looks blurry and repeatedly. Solution was to use mesh terrains with a high detailed texture and global normal map. At least it was much more faster and not blurry. <br />
<br />
Problem was there is no repeated terrain on the market to use, so combining them together looks with seems and wrong lighting. Also we don't understand how it should looks like ( scale ) at 7km, so result work was also unrealistic. The cool solution is to use real satellite images and heightmap data. We got understand that <b>at 7km altitude visual look of terrain is much more depends on texture, but not the heightmap</b>.<br />
<br />
Second problem was a speed. It is about 1200km per/hour ship movement. Also ship was a real rigidbody that moved by adding force to it. Camera moved with the ship. We noticed some glitches and spent some time discovering what was wrong. Some code was not in FixedUpdate and also we used interpolations on some physics objects. So turn off interpolation because we can't synchronize time for different interpolated physics bodies, and move every things into FixedUpdate. At low speed you sometimes will never notice it.<br />
<br />
Third problem that everything looks slowly. Yeahh we are at 1200km/h but looks like we stand at one point. The reason that the human eye have no object to determine actual speed. So if you want to game high speed movement feeling you should add small objects close to the camera. If you travel by the car and look at the highway you will feel the speed, but if you look at the sky you feel nothing, except dramatic universe hugeness :). We fix it with particles added to the ship that moves to you with high speed.<br />
<br />
Fourth problem is the gun positioning. At low distances you can shoot according to camera forward vector and hit the target. But at long distances you should correct your weapon according to distance to the object. So we raycasted to the target and position each gun individually ( we have a lot of them ) to hit the target.<br />
<br />
Fifth problem was limit of Unity world. I mean Unity use float to describe game coordinates, so with huge coordinate value you will get an error during render and at some point you can't move at all. So we make -80 km to 80 km movement about 20 minutes level fly. If we take bigger coordinate we will get warning.<br />
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYrmmaW_1fo75cegpA63zAZ9N3rZewzuDukLHUXhJLpiYODA7MX9RWtMzgcwj2lRvJ2uUEuwGYHFW_c9PesHJybZ772bDdjDFLJjSRjXHvEGaJ_2-GvufNg6LuAA6FIUT08-sfLM6E1UOK/s1600/Big2.png" imageanchor="1"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYrmmaW_1fo75cegpA63zAZ9N3rZewzuDukLHUXhJLpiYODA7MX9RWtMzgcwj2lRvJ2uUEuwGYHFW_c9PesHJybZ772bDdjDFLJjSRjXHvEGaJ_2-GvufNg6LuAA6FIUT08-sfLM6E1UOK/s640/Big2.png" width="640" /></a></div>
<br />
<br />kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-14366270429791681992016-02-18T03:15:00.005-08:002016-02-18T03:15:44.113-08:00Skyship Aurora Store Data Tutorial<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/zzYnrbFXn3E/0.jpg" src="https://www.youtube.com/embed/zzYnrbFXn3E?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
Sources of custom PlayerPrefs and example how it to use you can DOWNLOAD here:<br />
<a href="https://www.dropbox.com/s/2t1jwiwb1zjbl3d/StoringTutorial.zip?dl=0">https://www.dropbox.com/s/2t1jwiwb1zjbl3d/StoringTutorial.zip?dl=0</a><br />
<br />
Common problem of many games is storing data. Scores, health, screen resolution, huge world of Skyrim everything you need to store somewhere or somehow. Unity have buit-in cross platfrom thing called PlayerPrefs, Everything ok with them except they not working on Xbox and you could not save custom data types with them. Of course you can use System.IO for serializing custom classes into a file or upload them on server, but System.IO is not working on Windows Phone. If you dont want to make your code full of #if define symbols mess you need something universal. So what our needs:<br />
<br />
1. Class that will store data<br />
2. Able to save/load at any part of the code<br />
3. Working on PC/Console/Webplayer/Mobile<br />
<br />
So the only way is to write custom PlayerPrefs that can be serialized into various data structures like xml, binary etc. Also we need a singleton witch we can access at any part of the code like StoreData.Instance.SetInt("MyInt", 10 ). We need to attach such singleton to a gameobject at very first scene of the game and mark them as DontDestroyOnLoad cuz loading new scene will destroy any gameobject and data associated with them. So at very first scene at Awake function we need to load data for example from Steam cloud ( but as for me I recommend to save data into a file and mark them synchronized with cloud in steamworks panel) , wait til everything will be loaded from xbox storage container etc, then prompt Press any key to continue. Process input and continue the game. At least everything platform related things will be in one place, so you can control bugs easily and separate game logic from system things. It is a very good idea to separate everything from game logic like input, save/load, achievements etc.<br />
<br />
Huge plus of such custom player prefs that you can fast rebuilt game that was madden on PlayerPrefs into you custom PlayerPrefs. I also not recommend to call your custom PlayerPrefs like GamePrefs or anything else with prefix Game cuz in the future you will use GameObject much more often then GamePrefs so you need to switch in class helper in Monodevelop or Visual Studio which not optimal.<br />
<br />
One more thing that you will need to know about PlayerPrefs that on xbox you can't use binnary serializer but instead you will need a XML serialization, but keep in mind that xml is much bigger then binary data and saving can take time, BTW you can't save longer then 1 second at xbox otherwise you will not pass Microsoft certification. Often solution is to pack data into zip and serialize it, or completely redesign your game witch is not funny :D<br />
<br />
Also if your game is quite big you need to separate configuration like resolution, music volume ( better into .ini file ) from saved world. But for Skyship we have only one save file and it is not so big.<br />
<br />
Webplayer often was much more complicated for saving data cuz weplayer policiy deny saving any files on desktop. So the only 2 ways - saving everything on server or use playerprefs. For a small games player prefs is quite ok but for middle size game like Anoxemia or SkyshipAurora it will be not comfortable to use PlayerPrefs for saving everything. Solution is quite tricky:<br />
<br />
1.Serialize custom PlayerPrefs into byte array<br />
2. Convert byte array into base64 string<br />
3. Save base64 data string into original PlayerPrefs like PlayerPrefs.SetString( "GameData", mBase64Str ).<br />
<br />
Thats it. Ofcourse for big games like MMORPG you will need to store data on server with authorization and things like this.<br />
<br />
Into this custom PlayerPrefs you can add custom types of data that you can serialize.<br />
<br />
Sources of custom PlayerPrefs and example how it to use you can DOWNLOAD here:<br />
<a href="https://www.dropbox.com/s/2t1jwiwb1zjbl3d/StoringTutorial.zip?dl=0">https://www.dropbox.com/s/2t1jwiwb1zjbl3d/StoringTutorial.zip?dl=0</a><br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzUCleyEAdPT1LqVNj_QM0Eoml5ZN2xwhXCQ1lME_mmHNEiv_mYIiyA8T_p7sfhWtK8g3d6wbpkFiY_VRVVgsuzReZTO6plHRUIRzMX5IdmXC3eMSm8k-ZThwU-amJ5I0ubJd-HD_FjnyT/s1600/Saving.png" imageanchor="1"><img border="0" height="510" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzUCleyEAdPT1LqVNj_QM0Eoml5ZN2xwhXCQ1lME_mmHNEiv_mYIiyA8T_p7sfhWtK8g3d6wbpkFiY_VRVVgsuzReZTO6plHRUIRzMX5IdmXC3eMSm8k-ZThwU-amJ5I0ubJd-HD_FjnyT/s640/Saving.png" width="640" /></a></div>
<br />
<br />kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-58998611558700404122016-02-13T05:13:00.003-08:002016-02-13T05:13:40.806-08:00Unity unsupported multi-object editingSome componets in Unity like Shuriken Particles or Terrain does not support multi-editing:<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv0dfeNd3E51BPJr73GkoBEykqB6A_zXYyAkxvQQe3SdRZjHTVpqaVQR4183se7d9Y70vLjOqf5xOsBKzwio6kuCtNMDMvlIGjXqUwQXtCiAsQFARCCF_PPszC4LmBO6XKVuvw_tEI-_Zs/s1600/NotSupported.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv0dfeNd3E51BPJr73GkoBEykqB6A_zXYyAkxvQQe3SdRZjHTVpqaVQR4183se7d9Y70vLjOqf5xOsBKzwio6kuCtNMDMvlIGjXqUwQXtCiAsQFARCCF_PPszC4LmBO6XKVuvw_tEI-_Zs/s400/NotSupported.png" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Solution is to switch to debug mode of Unity Editor</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_U4XPD7_Fpt1uBnOU-BYxV0PcoeZcHpf-yBd-ZhM0teP6lOhcTaVNKIU2dCZeIqOkt0_QniM_F_tJu3lIs8vX2L9HJbXdKjxmY9MehlasTx0wOHvwU90KDmOzKP6-KJuSBLUwVwlx5cEH/s1600/DebugMode.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_U4XPD7_Fpt1uBnOU-BYxV0PcoeZcHpf-yBd-ZhM0teP6lOhcTaVNKIU2dCZeIqOkt0_QniM_F_tJu3lIs8vX2L9HJbXdKjxmY9MehlasTx0wOHvwU90KDmOzKP6-KJuSBLUwVwlx5cEH/s400/DebugMode.png" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Then you will get a lot of internal information of script in Inspector. Like</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGDaCC214udoj6ICJy333rLcJpYhyfSibnjOEfIOzfSOPto7ruHcmYXRxR3-GZYfD7mLgUFudasqhnXDc-jrRp4O8VMiQMVd6YWuRMdpjRxiKWFhsIN3d6cmyPOOqGKQ9L7aMPr2Kt7AyG/s1600/Terrain.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGDaCC214udoj6ICJy333rLcJpYhyfSibnjOEfIOzfSOPto7ruHcmYXRxR3-GZYfD7mLgUFudasqhnXDc-jrRp4O8VMiQMVd6YWuRMdpjRxiKWFhsIN3d6cmyPOOqGKQ9L7aMPr2Kt7AyG/s400/Terrain.png" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
You should not touch InstanceID or Local Identifier but you can change Tree Distance or Detail Object Distance and parameters will be changed on all multi-selected objects. Thats it. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Particles system data will be looks like this:</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKfP88cB52PP6z7zc2CmDKM8wMQ3L7anheLgbNsEEXA9kFPIJ531Mr6KI7IaDogaLYOUUFQMAMVhLAgSz1AuX7haGLgHRUoHzYS2krdQxfe38sFza_Ws8eQUjssCTHsBu2dQXRZqoxtewV/s1600/Patricles.png" imageanchor="1"><img border="0" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKfP88cB52PP6z7zc2CmDKM8wMQ3L7anheLgbNsEEXA9kFPIJ531Mr6KI7IaDogaLYOUUFQMAMVhLAgSz1AuX7haGLgHRUoHzYS2krdQxfe38sFza_Ws8eQUjssCTHsBu2dQXRZqoxtewV/s400/Patricles.png" width="400" /></a></div>
<div style="text-align: left;">
<br /></div>
kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com1tag:blogger.com,1999:blog-3128468499018959709.post-77380353042474683832016-02-10T10:05:00.004-08:002016-02-10T10:07:41.309-08:00Skyship Aurora Unity Water Tutorial<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/zzYnrbFXn3E/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/zzYnrbFXn3E?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
DOWNLOAD complete project:<br />
<a href="https://www.dropbox.com/s/0gdq68f9axi2f7l/LongDistanceWater.zip?dl=0">https://www.dropbox.com/s/0gdq68f9axi2f7l/LongDistanceWater.zip?dl=0</a><br />
<br />
We gonna make water like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ver6xBx7W6c/0.jpg" src="https://www.youtube.com/embed/ver6xBx7W6c?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
<br />
Now there is a lot of different waters for Unity. Some of them are very awesome and looks extremely real. But water is often suitable for first person human look and also sources and shaders are extremely complicated for modify and learning. For such game like <b>Skyship Aurora </b>we need not very complicated but fast water with reflection and waves. I've looked at existed solutions and found only HORIZON[ON]. Quite awesome thing for long distance rendering, but at same time quite complicated and hard to modifying. Best of all works all together with built-in terrains rendering system. So I've decided to make my own water again :). Once I've did it, so I have a vector to move on. Let's check previous water tutorial and modify it for long distance:<br />
<br />
<a href="http://kostiantyn-dvornik.blogspot.com/2013/05/unity-worlds-coolest-tutorial-about.html">http://kostiantyn-dvornik.blogspot.com/2013/05/unity-worlds-coolest-tutorial-about.html</a><br />
<br />
<b><i>Warning:</i></b><br />
<b><i>Keep in mind that this solution works with deffered rendering legacy only. So please turn on this rendering method for your project.</i></b><br />
<br />
First we need to remove all underwater things and leave only above water stuff, also we need to remove tranparent soft edge blending ( cuz we need to make as fast shader as possible ).<br />
<br />
Let's take a look at our previous solution. We have polygon with water material applied, mirror reflection script that makes reflection texture and script that detects underwater and change shader lod that makes underwater effect. Everything else should be removed like this.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicvSc0EhY2BX2T3uwrKTFHyPZ7GE8HEZHIz2bw6gq2tFZhIGnWkEED31IhjKyvJDjKVTQmMpbWxR7ljvKH6aQ65V8HEyOTsSKstf1X9xmp6Bs9SY0AlLLSFeETAe-FvxCfRb6iH4nAw7wp/s1600/CleanUp.png" imageanchor="1"><img border="0" height="369" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicvSc0EhY2BX2T3uwrKTFHyPZ7GE8HEZHIz2bw6gq2tFZhIGnWkEED31IhjKyvJDjKVTQmMpbWxR7ljvKH6aQ65V8HEyOTsSKstf1X9xmp6Bs9SY0AlLLSFeETAe-FvxCfRb6iH4nAw7wp/s640/CleanUp.png" width="640" /></a><br />
<br />
You can download start (cleanup) project <b>Unity 5</b> here:<br />
<a href="https://www.dropbox.com/s/ssu9l6ajdvm9u82/LongDistanceWaterStart.zip?dl=0">https://www.dropbox.com/s/ssu9l6ajdvm9u82/LongDistanceWaterStart.zip?dl=0</a><br />
<br />
This small dot at huge cube is a human size<br />
<br />
Shader looks like this:<br />
<br />
Ok lets remove step by step things that we don't need. Because of water have no transparent effect lets remove grab pass that do transparent things of water and texture accoding to this<br />
<br />
Before:<br />
sampler2D _GrabTexture : register(s0);<br />
sampler2D _BumpMap : register(s2);<br />
sampler2D _ReflectionTex : register(s3);<br />
<br />
sampler2D _CameraDepthTexture; // : register(s4);<br />
<br />
After:<br />
sampler2D _BumpMap;<br />
sampler2D _ReflectionTex;<br />
<br />
only 2 textures we need to make such long distance water. After remove everything that cause error when shader compiles.<br />
<br />
You will get this small shader that makes water:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">Shader "Dvornik/Long Distance Water" {</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Properties {</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _SpecColor ("Specular Color", Color) = (0.5,0.5,0.5,1)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _Shininess ("Shininess", Range (0.01, 1)) = 0.078125</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _Refraction ("Refraction", Range (0.00, 100.0)) = 1.0 </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _ReflectColor ("Reflection Color", Color) = (1,1,1,0.5)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _DepthColor ("Depth Color", Color) = (1,1,1,0.5)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _BumpReflectionStr ("_BumpReflectionStr", Range(0.00,1.00)) = 0.5</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _ReflectionTex ("_ReflectionTex", 2D) = "white" {}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _BumpMap ("Normalmap", 2D) = "bump" {}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">SubShader </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">#pragma surface surf BlinnPhong</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">sampler2D _BumpMap;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">float4 _ReflectColor;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">struct Input {</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">void surf (Input IN, inout SurfaceOutput o) </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float2 offset = o.Normal * _Refraction;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">{ </span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> Tags { "RenderType"="Opaque" }</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">CGPROGRAM</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">#pragma target 3.0</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">sampler2D _ReflectionTex;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">float _Shininess;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">float _Refraction;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">float _BumpReflectionStr;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"> float2 uv_MainTex;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float2 uv_BumpMap;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float3 worldRefl; </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float4 screenPos;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float3 viewDir;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> INTERNAL_DATA</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">};</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">{ </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> //Specular stuff</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Gloss = _SpecColor.a;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Specular = _Shininess;</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> //Normal stuff</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap - 33.0 * _Time.y ));</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Normal += UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap - 100.0 * _Time.y));</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Normal *= 0.5;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"> IN.screenPos.xy = offset * IN.screenPos.z + IN.screenPos.xy; </span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> float3 worldRefl = WorldReflectionVector(IN, o.Normal*half3(_BumpReflectionStr,_BumpReflectionStr,_BumpReflectionStr));</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> worldRefl.y = -worldRefl.y;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> worldRefl.x = -worldRefl.x;</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> half4 reflcol = tex2Dproj(_ReflectionTex, IN.screenPos);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> reflcol = reflcol * _ReflectColor;</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> half4 resCol = reflcol; </span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Emission = resCol;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Albedo = o.Emission;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">ENDCG</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">FallBack "Reflective/Bumped Diffuse"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<div>
<br /></div>
<br />
And result image will looks like this:<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVsquPhpv8dRblEW2UReujXjC3Q1HlH6jAhzXi-HqCPG3r2wmKSc6Deb3oM250dPNhtA73PQZq0lU-ryQQETJRZcX4xeJqfUYKX7XoZy-pIEaqU3iNclJxO3Lm3Rpy-1M3MXn9-xJPw1af/s1600/CleanUpNext.png" imageanchor="1"><img border="0" height="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVsquPhpv8dRblEW2UReujXjC3Q1HlH6jAhzXi-HqCPG3r2wmKSc6Deb3oM250dPNhtA73PQZq0lU-ryQQETJRZcX4xeJqfUYKX7XoZy-pIEaqU3iNclJxO3Lm3Rpy-1M3MXn9-xJPw1af/s640/CleanUpNext.png" width="640" /></a><br />
<br />
looks bad, but just because of settings. So lets continue our experiments. I tweaked a lot of parameters like wave speed and color like this:<br />
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Q7YJrlJQ3CQ0wAWAf7OWUI6eow-BTtnMjCOnfCmrapBbqfnj7zxQckIsNuYQKc_EBAfSZysPZ9t-AwnZ_p4Wudqrq0zStU8P05IM30fXxlQZ4SFqUPRwj31_pDa1CM2uO4QZHyv69aW8/s1600/Tweak.png" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Q7YJrlJQ3CQ0wAWAf7OWUI6eow-BTtnMjCOnfCmrapBbqfnj7zxQckIsNuYQKc_EBAfSZysPZ9t-AwnZ_p4Wudqrq0zStU8P05IM30fXxlQZ4SFqUPRwj31_pDa1CM2uO4QZHyv69aW8/s320/Tweak.png" width="192" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Also I've found not so tilable texture that can be used in wave generation.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Result shader looks like this:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">Shader "Dvornik/Long Distance Water" {</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Properties {</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _SpecColor ("Specular Color", Color) = (0.5,0.5,0.5,1)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _Shininess ("Shininess", Range (0.01, 1)) = 0.078125</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _Refraction ("Refraction", Range (0.00, 1.0)) = 0.02 </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _ReflectColor ("Reflection Color", Color) = (1,1,1,0.5) </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _ReflectionTex ("_ReflectionTex", 2D) = "white" {}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> _BumpMap ("Normalmap", 2D) = "bump" {}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">SubShader </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">{ </span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> Tags { "RenderType"="Opaque" }</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">CGPROGRAM</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">#pragma surface surf BlinnPhong</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">sampler2D _BumpMap;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">sampler2D _ReflectionTex;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">float4 _ReflectColor;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">float _Shininess;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">float _Refraction;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">float _BumpReflectionStr;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">struct Input {</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float2 uv_MainTex;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float2 uv_BumpMap; </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float4 screenPos;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> float3 viewDir;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> INTERNAL_DATA</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">};</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">void surf (Input IN, inout SurfaceOutput o) </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">{ </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> //Specular stuff</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Gloss = _SpecColor.a;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Specular = _Shininess;</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> //Normal stuff</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Normal = UnpackNormal(tex2D(_BumpMap, 2.0 * IN.uv_BumpMap + 0.01 * _Time.y ));</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Normal += UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap - 0.01 * _Time.y));</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Normal *= 0.5;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;"> float2 offset = o.Normal * _Refraction;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> IN.screenPos.xy = offset * IN.screenPos.z + IN.screenPos.xy; </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> half4 reflcol = tex2Dproj(_ReflectionTex, IN.screenPos);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> reflcol = reflcol * _ReflectColor;</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> half4 resCol = reflcol; </span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Emission = resCol;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> o.Albedo = o.Emission;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">ENDCG</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">FallBack "Reflective/Bumped Diffuse"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">}</span><br />
<br /></div>
<div>
And we got it:</div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-rOZ0j_b-IEBLhH6qnpM_G6RNw0oX4HxJw4MtqSNXGefudlebLnaptf3hs3ImjQ4dRyQwXjNQ5JTaqc9u7J-m5vss-IcR2bDKjY7_hXfIoyCC-JU_aoeiCetVfa0K54XkBDx31LXzKSPl/s1600/Result.png" imageanchor="1"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-rOZ0j_b-IEBLhH6qnpM_G6RNw0oX4HxJw4MtqSNXGefudlebLnaptf3hs3ImjQ4dRyQwXjNQ5JTaqc9u7J-m5vss-IcR2bDKjY7_hXfIoyCC-JU_aoeiCetVfa0K54XkBDx31LXzKSPl/s640/Result.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<b><i>Note:</i></b></div>
<div>
<b><i>In mirror reflection script you can tweak layers that will be render for reflection to minimize drawcalls and make your render faster.</i></b></div>
<br />
<br />kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-76358459143185036952016-02-04T02:03:00.001-08:002016-02-04T02:03:12.064-08:00Smart TV voiceHave no idea was it implemented or not. But when you say something - volume of TV become lover. Like you can discuss film.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0tag:blogger.com,1999:blog-3128468499018959709.post-22443089558175337562016-01-19T03:48:00.000-08:002016-01-19T03:48:13.433-08:00Post apocalyptic parkImagine some huge territory destroyed by the war ( Donbass region will fit for now ) that can be turned into park for fans of post apocalyptic atmosphere where you can hunt, survive and make cool movies with real decoration and feelings. Of course monetize it with tickets and stuff like that.kostiantyn-dvornikhttp://www.blogger.com/profile/04471726748211884432noreply@blogger.com0