Страница 1 из 1

Move Or Die

СообщениеДобавлено: 14 мар 2019, 19:55
Mr.Rosbi
Привет! В свободное время клепаю свою игру. И решил что буду демонстрировать процесс развития вот тута.

Игра обычная казуалка которую я начал делать года 3 назад и забил на неё спустя пару месяцев. А вот сейчас стал по свободнее и думаю дай доделаю, негоже бросать на полпути.

Игра на мобилки.

Концепция до жути проста:
Скрытый текст:
Есть персонаж, есть квадратная зона для перемещения. На персонажа падают метеориты и задача игрока как можно дольше уворачиваться от метеоритов.

Изюминка которая меня привлекает так это разнообразие персонажей и локаций. То есть игрок поиграл 2 минутки за стандартного персонажа, а потом получил нового персонажа. Начинает игру за него и такой: "О прикольно новая локация!" И вот такой цикл.

Сейчас я понятное дело написал всю игру заново, так-как код 3 летней давности который ты написал на 2 годе изучения gameDev'а поддерживать - себя не жалеть.

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

От игры я не жду доллара и миллионы долларов после релиза.
Я хочу получить опыт в разработки качественного(хотя бы технически) проекта доведённого до конца поддержке приложения после релиза, анализ пользователей, A/B тестирование и прочее заумные бизнес штуки.

А здесь я хочу обсуждать разные фичи, концепции и технические решения. Я буду рад мнению и совету со стороны.

Вот немного визуала с нынешним состоянием игры:

Скрытый текст:
Гифка с небольшой демонстрацией gamePlay'а:
https://vk.com/doc169665908_486678282?hash=d1b63339ac5af0fc8a&dl=ce4957fbd228130cf6&wnd=1&module=groups&mp4=1

Ещё одна гифка с мини фичей которая мне оч греет душу(у каждого персонажа есть свой цвет который влияет на весь UI):https://vk.com/doc169665908_485926232?hash=6cd9f640da132907bc&dl=6e3a135e92f35ce0dd&wnd=1&module=groups&mp4=1

Ещё одна гифка с одной из локаций в состоянии idle:
https://vk.com/doc169665908_484944411?hash=b7f8a3648b177ae049&dl=3f634623b46101d832&wnd=1&module=groups&mp4=1

Ещё одна локация:
https://vk.com/doc169665908_495520755?hash=e3c9450b28851d836a&dl=9413fb2fcd4e0ce7ba&wnd=1&module=groups&mp4=1

Да знаю очень похоже на Crossy Road воксели и всё в таком духе. Ну что поделать 3 года назад мне очень понравилась картинка Crossy Road и я хотел такое, но своё. А сейчас менять визуал не хочу. Не кидайтесь камнями :D


Если кого заинтересовал, то я рад и получил монетку в корзину мотивации, спасибо
Так же если вам будет удобнее другие ресурсы, то вот:
vk: https://vk.com/ravian_tm
twitter: https://twitter.com/kulik_ilya_g

Чуть позже я хочу поделится с вами своим решением для реализации static illumination. Мне кажется это хорошим решением :)
Ещё хочу показать вам демку. Если будет кому конечно :D

Re: Move Or Die

СообщениеДобавлено: 14 мар 2019, 22:37
Mr.Rosbi
Как я сделал Static illumination

Во первых отказался я от Unity Light Bake так как мне нужна смена Light Map в RealTime и у меня с Unity Light Map возникли трудности. Решил сделать свой шейдер.

Так вот на моделе 2 UV
1. Первый UV для крты albedo 64х64 где каждый полигон притянут к определённому пикселю цвета так же для Emissions

Карта в ниже:
Скрытый текст:
Изображение


2. UV для осввещения уже в таком виде в котором мы привыгли видеть развёртку, как минимум я пытался к нему приблизится
и в R канале я держу тени, в G канале Ambient Occlusion и в B канале свет в градации от тёмного к белому. Увы пока без GI

Карта освещения ниже:
Скрытый текст:
Изображение


Вот мой шейдер
Синтаксис:
  1. Shader "Move Or Die/Main" 
  2. Properties { 
  3. [NoScaleOffset] _AlbedoTex ("Albedo", 2D) = "white" {} 
  4. [NoScaleOffset] _Emission ("Emission", 2D) = "white" {} 
  5. [NoScaleOffset] _Illumination ("Illumination", 2D) = "white" {} 
  6.  
  7. [HDR] _AmbientEnvironment ("Ambient Environment", Color) = (1,1,1,0) 
  8.  
  9. _EmissionIntensity ("Emission Intensity", Range (0,1.0)) = 1.0 
  10. _LightIntensity ("Light Intensity", Range (0,1.0)) = 1.0 
  11. _ShadowIntensity ("Shadow Intensity", Range (0,1.0)) = 1.0 
  12. _AOIntensity ("AO Intensity", Range (0,1.0)) = 1.0 
  13. SubShader { 
  14. Tags { "RenderType"="Opaque" } 
  15. LOD 200 
  16.  
  17. CGPROGRAM 
  18. #pragma surface surf Lambert 
  19.  
  20. sampler2D _AlbedoTex; 
  21. sampler2D _Illumination; 
  22. sampler2D _Emission; 
  23.  
  24. half4 _AmbientEnvironment; 
  25.  
  26. half _LightIntensity; 
  27. half _EmissionIntensity; 
  28. half _ShadowIntensity; 
  29. half _AOIntensity; 
  30.  
  31. static fixed4 whiteColor = (1,1,1,1); 
  32.  
  33. struct Input { 
  34. float2 uv_AlbedoTex : TEXCOORD0; 
  35. float2 uv2_Illumination : TEXCOORD1; 
  36. }; 
  37.  
  38. half3 BlendShadowsAndAO(half3 shadows, half3 ao) 
  39. return 1 - (ao + shadows); 
  40.  
  41. half3 BlendLightAndShadows(half3 light, half3 shadows) 
  42. return lerp(whiteColor, light,1 - _LightIntensity) * lerp(whiteColor, _AmbientEnvironment, _AmbientEnvironment.a); 
  43.  
  44. void surf (Input IN, inout SurfaceOutput o) { 
  45. half3 albedo = tex2D(_AlbedoTex, IN.uv_AlbedoTex); 
  46.  
  47. half3 illum = tex2D(_Illumination, IN.uv2_Illumination); 
  48.  
  49. half shadowsValue = illum.r * _ShadowIntensity; 
  50. half3 shadowColor = (shadowsValue,shadowsValue,shadowsValue); 
  51.  
  52. half aoValue = illum.g * _AOIntensity; 
  53. half3 aoColor = (aoValue,aoValue,aoValue); 
  54.  
  55. half3 emission = tex2D(_Emission, IN.uv_AlbedoTex); 
  56.  
  57. o.Albedo = albedo * BlendShadowsAndAO(shadowColor, aoColor); 
  58. o.Emission = (albedo * lerp(whiteColor, (albedo * emission), 1-_EmissionIntensity)) * BlendLightAndShadows(illum.b, shadowColor); 
  59. ENDCG 

Я далеко не хороший шейдро-писарь по этому буду рад предложениям по улучшению

Тут итог:
Скрытый текст:
Было
Изображение

Стало
Изображение


А сейчас эта локация выглядит так:
Скрытый текст:
Изображение


Вот как-то так. Вообще я уверен что это велосипед, но приятно что сам такое забацал :D

Re: Move Or Die

СообщениеДобавлено: 17 май 2019, 11:28
Woland
Выглядит очень круто) Как освещение, так и цвета. Да и сама анимация очень нравится)