Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Игра рыбалка представляет собой полноценный симулятор рыбалки и дает возможность порыбачить в реально существующих местах из жизни и поймать рыбу, которая там обитает.

Рыбный дождь

Спорт, Симуляторы, Рыбалка

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
11
UncleMedied
UncleMedied
13 дней назад
Gamedev по-русски
Серия Славянские Мифы. Том I. "Я хочу летать"

Электромонтер-геймдизайнер⁠⁠

Не буду томить предисловиями. Вводные данные: 35, мужчина, стаж работы в обслуживании высоковольтных линий 12 лет. Работа тяжелая, нужно лазать по опорам, пилить деревья и кусты под проводами, ремонтировать линии. Любая непогода - сети стоят раком, приходится работать допоздна. Но зато, в моем понимании, я человек социально полезный, каковой должна являться каждая живая душа, если у нее нет аккаунта на онлифанс.

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

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

Спустя несколько месяцев, наверно, даже почти год, мне написали в ВК, оттуда мы перекочевали в ТГ. Ребятам нужен был сценарий квестов. Мы пообщались, я посмотрел наработки в кайтене, быстренько вдохновился, написал страницу текста "по мотивам". Ребятам сразу понравилось и мы, крайне бессистемно, но с желанием, принялись притираться друг к другу. Были трения, трудности и непонятности, однако без конфликтов. Механизм медленно, но верно, набирал обороты.

Через пару месяцев моей работы над сценарием игры парни поняли, что всё заходит слишком далеко и предложили мне самому подготовить Базу Данных с предметами, персонажами, квестами, механиками и прочее, и так далее. Случилось это потому, что в придумывании они не были столь хороши, как я, и здраво рассудили, что лучше будут заниматься тем, в чем я полный профан. Они делают модели и реализуют механики. Еще у нас есть человек, который отвечает за звуковое сопровождение.

За полгода работы над БД, не имея опыта, я всё таки умудрился создать что-то цельное и довольно объемное. Парни в восторге, я тоже доволен, наш коллектив перешёл на тот уровень общения, когда переход на мат это не конфликт, а переизбыток позитивных эмоций.

Мир продуман детально, вариативный сюжет пишется каждый день. Решили разбить игру на 7 глав. Первая, для релиза, по объему работ, самая большая, так как именно в ней нужно соорудить весь фундамент для дальнейших сцен. Кто понял, тот поймет.

Собственно, цель написания данного поста в том, чтобы вы стали зрителями интересного случая. Сбудется ли мечта работяги? Станет ли он прославленным геймдизайнером? Сумеет ли закрепиться в новой для себя стезе? Постараюсь писать не часто, но периодически. Мы пишем игру, которая называется "Славянская Мифология. Том первый: Я хочу летать". Ее еще нигде нет, есть только канал в ТГ, группа в ВК и дискорд. Никуда никого не приглашаю, материала "на показ", у нас маловато.

В дальнейшем поделюсь опытом, как впервые решил воспользоваться екселем, как начал его осваивать, и как заполнял. Расскажу, как приступил к написанию сценария. В общем, обо всем чуть подробнее. Спасибо за внимание, пишите комментарии, ставьте антилайки, пророчьте полный провал. Мы почитаем, утрём сопли натруженной ладонью и пойдем работать на любимый завод.

Показать полностью
[моё] Gamedev Завод Российский игрострой Сценарист Сюжет Истории из жизни Текст Личный опыт
9
16
TwoMoons
TwoMoons
1 месяц назад
Лига Геймеров

Black Book 2⁠⁠

Глава студии «Мортёшка» Владимир Белецкий сообщил, что его студия планирует создать сиквел «Чёрной Книги».

Black Book 2 Компьютерные игры, Черная Книга, RPG, Российский игрострой, Новости игрового мира, Длиннопост

Действие будет происходить всё там же, в Чердынском Уезде конца XIX века, но зимой.

Боёвка, скорее всего, будет уже не карточной, а JRPG-шной.

Путешествия по карте хотят сделать более проработанными, менее линейными.

Менеджмент чертей и знаткость оставят, как и былички.

Black Book 2 Компьютерные игры, Черная Книга, RPG, Российский игрострой, Новости игрового мира, Длиннопост
Black Book 2 Компьютерные игры, Черная Книга, RPG, Российский игрострой, Новости игрового мира, Длиннопост
Black Book 2 Компьютерные игры, Черная Книга, RPG, Российский игрострой, Новости игрового мира, Длиннопост
Black Book 2 Компьютерные игры, Черная Книга, RPG, Российский игрострой, Новости игрового мира, Длиннопост

Эти скриншоты — из нереализованного DLC про молодого деда Егора. Разработку остановили ради «Лиха Одноглазого», но не отменили насовсем. Возможно, это DLC станет дополнением именно ко второй части «Чёрной Книги».

Ссылка на саму новость.

Показать полностью 4
Компьютерные игры Черная Книга RPG Российский игрострой Новости игрового мира Длиннопост
0
2
Asmagor
2 месяца назад
Серия Unity3D

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 3⁠⁠

Доброго времени, товарищи! Прошло некоторое время с того момента как я начал учить Unity и вот, что я на данный момент знаю и понимаю. Это офигеть как трудно, но неимоверно увлекательно!

Итак, напомню что я там хотел (требования к игре):
1. Большой мир (80-100 систем).

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 3 Unity, Программирование, Российский игрострой, Странный юмор, Длиннопост

Пример Игрового мира для реализации.

2. Каждый уровень (звездная система) хранит своё состояние.
3. RPG система для юнитов. (уровень, экипировка, инвентарь). Квесты, события, песочница, сюжет, торговля.
4. RTS управление (перемещение в 3-х мерном пространстве). Захват систем, кол-во юнитов в сражении как в Homeworld2, Star Wolves 3: Civil War.
5.
6. Игра однопользовательская, для Windows. (Steam)

Что из этого удалось реализовать и на какой стадии оно всё находится? Для начала расскажу вам о настройках проекта:
1. Версия UnityEngine 2022.3.62f1 LTS. Тип проекта: 3D. Built-In Render Pipeline.
2. Сразу после создания переходим в Project Manager и выполняем в таком порядке: обновляем пакеты в In Project, потом устанавливаем новые пакеты в таком порядке - Addressables, 2D Sprite, AI Navigation, Cinemachine, Localization, Input System и перезапускаем редактор для вступления изменений необходимых для Input System.

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 3 Unity, Программирование, Российский игрострой, Странный юмор, Длиннопост

Project Packages

3. После перезагрузки переходим в Window -> Asset Management -> Addressables -> Groups. В появившемся окне -> Create Addressables Settings. Я пока что разделил для себя ассеты в такие группы: Prefab_Camera, Prefab_Lights, Prefab_MainMenu, Prefab_PauseMenu, Prefab_UI, Prefab_GameObjects, Asset_Audio, Asset_Sound, Asset_Music, Asset_Image, Asset_Material, Asset_Skybox, Asset_Fonts, Asset_Localization, VFXSFX, Core. Возможно потом я пересмотрю подход к групперовке.

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 3 Unity, Программирование, Российский игрострой, Странный юмор, Длиннопост

Мой вариант групп для проекта

4. Далее создаём папку для Localization. Переходим Project Settings -> Localization и создаём настройки локализации - Localization Settings в созданной ранее папке. Потом в обновившемся окне Project Settings -> Localization - добавим локали Add Locales. Я выбрал - EN, RU, и сохраняем их в Localization/Locales.
6. Теперь создаём таблицы для локализации Window- > Asset Management и в появившемя окне в левом верхнем углу -> New Table Collection. В появившемся окне Name -> MainMenu и нажимаем Create. Сохраняем по адресу: Localizatino/Tables. Закрываем пока это окно.

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 3 Unity, Программирование, Российский игрострой, Странный юмор, Длиннопост

Localization Tables


5. Переходим в Project Settings - Player. Вводим название своей компании согласно вашей форме предпринимательства ))).( Я пока не менял Project Settings - Player -> Active Input Handling и оставил его в значении Both.)
6.Переходим в Project Settings - Text Mesh Pro и устанавливаем необходимый минимум - Import TMP Essentials.
7. Создаём папку - Inputs. Переходим в Project Settings -> Input System Package и создаём действия для всего проекта - Create and assign a default project-wide Action Settings и перемещаем их в папку.
8. Переходим в Project Settings -> Input System -> Settings и создаём Settings Asset. В обновившемся окне - Supported Devices -> добавляем Mouse и Keyboard.
8. Возвращаемся в Project Settings - Input System Package и создаём несколько Action Maps: Gameplay_RTS, MainMenu, PauseMenu, Dialogue, Management и Gameplay_DirectControl (я пока остановился на таких).Чуть позже - подробнее о настройках.

Для Menu: Переименовать New Action ->LMB_Click и в уго Binding -> Path -> Left Button [Mouse] и чуть ниже в Use In Control scheme - тут и далее везде ставим галочку Keyboard&Mouse.

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 3 Unity, Программирование, Российский игрострой, Странный юмор, Длиннопост

9. Создаём папки для импортируемых ассетов: UI/Image/Texture, UI/Image/Icon, UI/Fonts, UI/Selection, Audio/Sound, Audio/Music, Skyboxes, Prefab/GameObjects, Prefab/UI, Prefab/Core. Потом заполним ассетами. Едем дальше.

10. Папке Scenes: Переименовать Sample Scene в MainMenu, потом добавить сцены Bootstrap, Gameplay и UI.
11. Создать папку Scripts. В папке создать Assembly Definition (MainAssemblyDefinition). В инспекторе при выбранном свежесозданном assembly definition: Namespace -> (название вашей игры или как вам заблагорассудится) и чуть ниже - Assembly Definition References -> Add и добавляем следующее:
com.unity.cinemachine; InputSystemForUI; Unity.Addressables; Unity.AI.Navigation; Unity.InputSystem; Unity.Localization; Unity.ResourceManager; Unity.TextMeshPro; UnityEngine.UI

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 3 Unity, Программирование, Российский игрострой, Странный юмор, Длиннопост

12. Теперь перейдем на сцену Bootstrap удалим все объекты, создаём пустой объект Hierarchy -> RMB -> Create Empty, и переименвываем его в Bootstrap.
13. File -> Build Settings -> и перетащили Bootstarp Scene из папки Scenes в Scenes in Build.
14. В папке Scripts создайте новый скрипт с именем Bootstrap и прикрепите его к объекту на сцене.
15. File -> Save и Save Project. ВСЁ! Вот и закончили первоначальную настройку проекта.

В следующем посте: ассеты, скрипты.

Показать полностью 6
[моё] Unity Программирование Российский игрострой Странный юмор Длиннопост
6
PresidentOfGames
PresidentOfGames
3 месяца назад

Привет пикабу!⁠⁠

Мы команда инди разработчиков и сейчас делаем свой "Симулятор курьера"!

Привет пикабу! Gamedev, Инди игра, Игры, Инди, Unity, Российский игрострой
Привет пикабу! Gamedev, Инди игра, Игры, Инди, Unity, Российский игрострой
Показать полностью 1
[моё] Gamedev Инди игра Игры Инди Unity Российский игрострой
26
1
Asmagor
4 месяца назад

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 1⁠⁠

Простите, мне пипец как стыдно просить помощи, но данный материал пока пишется с целью получения хоть каких нибудь денег... Блять, испанский стыд... докатился....

Итак... игра.

Посмотрев на то, что народ публикует под вывеской - "Я сделялъ" (тут картинка, где почки показывают мозгу камни) - я немного офигел и подумав решил, что буду делать игру RTS/RPG в космосе.
Почему RTS/RPG? Достойный вызов, изумруд в портфолио, да и не солидно делать, вот эти вот покатушки шариком, бесконечный бегун (runners)...


Поизучав игры, я вначале хотел сделать игру на мобильный телефон (прекрати называть ЭТО телефоном - запомни, это - устройство) на Android, но слегка приуныл от нехватки знаний.


Почему в космосе, спросят самые любопытные? А, потому, что в этом случае надо меньше объектов.

В итоге посмотрев ещё несколько видосов от CodeMonkey (хитрый дядька, но об этом потом) я понял, что:
1. Сэттинг - будущее, 2250 год, космос.
2. Жанр - RTS/RPG
3. Платформа: Windows
4. Распространение: Steam
5. Тип: Singleplayer (пока что)

Задача максимум:
31.05.2025 - создать MVP* и опубликовать игру в раннем доступе по сходной цене.


*Шо такое MVP - Minimal Viable Product, тобишь, по-нашему, это будет - Минимально Жизнеспособный Продукт.

Я пропущу такие моменты (они, кстати, очень важны. Пожалуйста - не пренебрегайте.):

1. Составление Game Design Document
2. Составление Technical Design Document

Итак, немного о предстоящей игре.... Я вдохновлялся следующими играми: EVE Online, Homeworld2, Star Wolves 3: Civil War, X4

Игровой мир: Галактика, звездные системы, соединенные прыжковыми вратами или черными дырами, кстати галактика планируется на 60+ систем, но для начала попробую сделать хотя бы 10
4 Основные фракции - Калгарцы, Аракибы, Воссолны, Сларусы.
Второстепенные фракции - Пираты, Мусорщики, Наемники, Исследователи (ещё думаю).

Игровой мир (диспозиция): Основные фракции развиваются, конкурируют между собой, но цель одна - одна фракция будет владеть Галактикой. Игрок может влиять на это дело, а может и забить на это дело и заниматься своими делами.

Сюжет: В процессе т.к. еще не готова система диалогов и квестов.

Фишки игры: Ага, так я вам и сказал ) Узнаете в процессе.

Итак, начнем. Начнем мы с того, что будем использовать паттерн - Единая Точка Входа. Хотя следует сначала определится (где твоё место и что ты за птица (с)) c архитектурой проекта и его структурой.

1. Открываем Unity Hub
2. Качаем версию LTS 2023.3.61f1

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 1 Unity, Российский игрострой, Программирование, Странный юмор, Мат, Длиннопост

Так выглядит Unity 2023.3.61f1

3. Создаём проект на BRP (Built-in Render Pipeline)*
*Да, знаю, что будут делать URP (Universal Render Pipeline) проекты в новых версиях Unity по-умолчанию и дело движется к деприкации BRP.

Итак для себя я решил, что буду использовать следующие полезные (не факт) приобретенные знания:

Игра будет состоять из (пока) 7 сцен:

1. Bootstrapper - отвечает за инициализацию сервисов.
2. MainMenu - главное меню. Позволяет начать новую игру (продолжить - пока не работает), загрузить игру, изменить настройки (применить и сохранить),
3. Gameplay - сцена в которой и будет происходить всё действо.
4. UIScene - сцена загружающаяся поверх Gameplay и отвечающая за отображение HUD и других UI.... Так, надоело... HUD - Heads-Up Display, UI - User Interface.
4. EndGame - Тут будем показывать заставку/видео/кат-сцену Победы/Проигрыша/Секретная_Концовка (пока одна).
5. Utility - по идее должна использоваться для гарантированной выгрузки всего, что было в памяти, дабы предотвратить возможные (я ведь не волшебник, а только учусь) утечки памяти

Где, 1 - Bootstrap сцена, в которой мы будем инициализировать полезные нам сервисы, мэ-э-э-энеджеры и т.д. С этой целью создадим несколько скриптиков (придется попечатать немного):
- Удалить все объекты со сцены.
- Добавить объект, переименовать в Bootstrap (вообще без разницы, как вы его назовете - ни на что не влияет).
- В папочке (см. структуру проекта ниже) создаём скрипт: Bootstrap.cs который будет отвечать за инициализацию сервисов.
- Сервисы мы будем хранить и использовать централизованное (Service Locator шаблон). Более того Service Locator у нас будет не MonoBehaviour, а обычный Plain Old Class Object (POCO).

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 1 Unity, Российский игрострой, Программирование, Странный юмор, Мат, Длиннопост

Структура проекта. Всё красиво разложено по папочкам. Всё как мы любим.


Тут следует сделать небольшое отступление:
Классы которые наследуются от MonoBehaviour ВСЕГДА должны быть компонентом (прикреплены) GameObject и присутствовать на сцене.
*При смене сцены, например (сцена1 -> сцена2) все объекты сцены1 будут выгружены из памяти (т.е. канут в Лету)

В таком случае мы будем использовать шаблон Singleton (Одиночка.... одинокий одиночка.... лол)
Поскольку мы его применяем к Service Locator, следовательно сервисы, зарегистрированные в нем будут присутствовать во всех сценах.

Внимание вопрос:
Каким следует сделать Service Locator - MonoBehviour или POCO. Почему?

Я остановился на POCO:

using System;

using System.Collections.Generic;

using UnityEngine;


namespace SpaceMercsLife

{

/// <summary>

/// ServiceLocator - это паттерн проектирования, который предоставляет глобальную точку доступа к сервисам, не связывая клиентский код с конкретными реализациями этих сервисов.

/// В данном случае мы используем ServiceLocator как POCO класс, что бы он был доступен везде.

/// По окончанию использования вызвать Dispose из другого класса - MonoBehaviour

/// </summary>

/// //: MonoBehaviour

public class ServiceLocator : IDisposable

{

// Словарь для хранения зарегистрированных сервисов. Ключ - тип сервиса, значение - экземпляр сервиса.

private readonly Dictionary<Type, object> _services = new Dictionary<Type, object>();

// Статическое поле для хранения единственного экземпляра ServiceLocator (Singleton).

private static ServiceLocator _instance;

// Статическое свойство для доступа к единственному экземпляру ServiceLocator.

// Ленивая инициализация: экземпляр создается только при первом обращении.

public static ServiceLocator Instance => _instance ??= new ServiceLocator();

/// <summary>

/// Регистрирует сервис указанного типа с предоставленным экземпляром.

/// Если сервис такого типа уже зарегистрирован, он будет перезаписан, о чем будет выведено предупреждение.

/// </summary>

/// <typeparam name="T">Тип регистрируемого сервиса (интерфейс или класс).</typeparam>

/// <param name="service">Экземпляр сервиса для регистрации.</param>

// Событие, вызываемое после регистрации сервиса.

public static event Action<Type, object> ServiceRegistered;


// Событие, вызываемое после отмены регистрации сервиса.

public static event Action<Type> ServiceUnregistered;

/// <summary>

/// Регистрирует сервис указанного типа (интерфейса) с предоставленным экземпляром.

/// Если сервис такого типа уже зарегистрирован, он будет перезаписан, о чем будет выведено предупреждение.

/// </summary>

/// <typeparam name="TInterface">Тип интерфейса регистрируемого сервиса.</typeparam>

/// <typeparam name="TImplementation">Тип конкретной реализации сервиса.</typeparam>

/// <param name="service">Экземпляр сервиса для регистрации.</param>

public void Register<TInterface, TImplementation>(TImplementation service)

where TInterface : class

where TImplementation : class, TInterface

{

var interfaceType = typeof(TInterface);

if (_services.ContainsKey(interfaceType))

{

Debug.LogWarning($"Service {interfaceType} already registered. Overriding with {service.GetType().Name}...");

_services[interfaceType] = service;

}

else

{

_services.Add(interfaceType, service);

ServiceRegistered?.Invoke(interfaceType, service);

}

}

/// <summary>

/// Отменяет регистрацию сервиса указанного типа (интерфейса).

/// </summary>

/// <typeparam name="TInterface">Тип интерфейса сервиса, который необходимо отменить регистрацию.</typeparam>

public void Unregister<TInterface>() where TInterface : class

{

var interfaceType = typeof(TInterface);

if (_services.ContainsKey(interfaceType))

{

_services.Remove(interfaceType);

ServiceUnregistered?.Invoke(interfaceType);

Debug.Log($"Service {interfaceType} unregistered.");

}

}

/// <summary>

/// Получает зарегистрированный сервис указанного типа (интерфейса).

/// </summary>

/// <typeparam name="TInterface">Тип интерфейса запрашиваемого сервиса.</typeparam>

/// <returns>Экземпляр зарегистрированного сервиса.</returns>

/// <exception cref="Exception">Выбрасывает исключение, если сервис указанного типа не найден.</exception>

public TInterface Get<TInterface>() where TInterface : class

{

var interfaceType = typeof(TInterface);

if (!_services.TryGetValue(interfaceType, out var service))

{

throw new Exception($"Service {interfaceType} not found");

}


return (TInterface)service;

}


/// <summary>

/// Пытается получить зарегистрированный сервис указанного типа (интерфейса).

/// </summary>

/// <typeparam name="TInterface">Тип интерфейса запрашиваемого сервиса.</typeparam>

/// <param name="service">Выходной параметр, содержащий экземпляр сервиса, если он найден, иначе null.</param>

/// <returns>True, если сервис найден, иначе false.</returns>

public bool TryGet<TInterface>(out TInterface service) where TInterface : class

{

var interfaceType = typeof(TInterface);

if (_services.TryGetValue(interfaceType, out var obj))

{

service = (TInterface)obj;

return true;

}

service = null;

return false;

}


/// <summary>

/// Удаляет все зарегистрированные сервисы и очищает события.

/// </summary>

public void Clear()

{

_services.Clear();

ServiceRegistered = null;

ServiceUnregistered = null;

// Можно добавить Debug.Log("ServiceLocator cleared.") для обратной связи.

}


/// <summary>

/// Реализация интерфейса IDisposable. Освобождает ресурсы, удерживаемые ServiceLocator.

/// В данном случае, очищает список сервисов, отписывается от событий и обнуляет ссылку на экземпляр.

/// </summary>

public void Dispose()

{

if (_instance != null)

{

_instance.Clear();

_instance = null;

}

GC.SuppressFinalize(this);

}

}

}

А вот на "прям вот сейчас, сию минуту" выглядит Bootstrap.cs

using UnityEngine;

using SpaceMercsLife.Service.Interfaces;

using SpaceMercsLife.Service.Implementation.Mono;

using SpaceMercsLife.Service.Implementation.POCO;

using System.Threading.Tasks;

using UnityEngine.SceneManagement;

using SpaceMercsLife.SLocator;


namespace SpaceMercsLife

{

public class Bootstrap : MonoBehaviour

{

private string configFileName = "game_config";

private string defaultLocale = "en";


private async void Start()

{

MonoBehaviourServicesRegistration();

await POCOServicesRegistration();

ReleaseResources();


await LoadGameSettings();


// Воспроизведение фоновой музыки

var audioService = ServiceLocator.Instance.Get<IAudioService>();

await audioService.PlayBackgroundMusicAsync("main_theme", volume: 1.0f, fadeInDuration: 2.0f);


// Загрузка сцены главного меню

var sceneService = ServiceLocator.Instance.Get<ISceneService>();

await sceneService.LoadSceneAsync("MainMenu", LoadSceneMode.Single, showLoadingScreen: true, uiSceneName: null);

}


private async Task LoadGameSettings()

{

// Загрузка графических настроек

var graphicsService = ServiceLocator.Instance.Get<IGraphicsService>();

await graphicsService.LoadSettingsAsync();


// Загрузка настроек ввода

var inputService = ServiceLocator.Instance.Get<IInputService>();

await inputService.LoadBindingsAsync();


// Загрузка настроек VFX

var vfxService = ServiceLocator.Instance.Get<IVFXService>();

await vfxService.LoadSettingsAsync();


// Загрузка настроек UI

var uiService = ServiceLocator.Instance.Get<IUIService>();

await uiService.LoadSettingsAsync();


// Инициализация камеры

var cameraService = ServiceLocator.Instance.Get<ICameraService>();

var mainCamera = cameraService.CreateCamera("MainCamera");

cameraService.SetMainCamera(mainCamera);


// Загрузка настроек камеры и мыши

await cameraService.LoadSettingsAsync();

}


private void MonoBehaviourServicesRegistration()

{

VFXService vfxServicePrefab = Resources.Load<VFXService>("Prefabs/VFXService");

SceneService sceneServicePrefab = Resources.Load<SceneService>("Prefabs/SceneService");


var vfxService = Instantiate(vfxServicePrefab);

DontDestroyOnLoad(vfxService.gameObject);

vfxService.Initialize(ServiceLocator.Instance.Get<IConfigurationService>());

ServiceLocator.Instance.Register<IVFXService, VFXService>(vfxService);


var sceneService = Instantiate(sceneServicePrefab);

DontDestroyOnLoad(sceneService.gameObject);

ServiceLocator.Instance.Register<ISceneService, SceneService>(sceneService);

}


private void ConfigInitialization()

{

var configService = new SimpleConfigurationService();

configService.LoadConfig($"Config/{configFileName}");

ServiceLocator.Instance.Register<IConfigurationService, SimpleConfigurationService>(configService);


var audioService = new AudioService(configService);

ServiceLocator.Instance.Register<IAudioService, AudioService>(audioService);


var graphicsService = new GraphicsService(configService);

ServiceLocator.Instance.Register<IGraphicsService, GraphicsService>(graphicsService);


var inputService = new InputService(configService);

ServiceLocator.Instance.Register<IInputService, InputService>(inputService);


var cameraService = new CameraService(configService);

ServiceLocator.Instance.Register<ICameraService, CameraService>(cameraService);


var uiService = new UIService(configService);

ServiceLocator.Instance.Register<IUIService, UIService>(uiService);


var localizationService = new SimpleLocalizationService();

localizationService.SetLocale(defaultLocale);

ServiceLocator.Instance.Register<ILocalizationService, SimpleLocalizationService>(localizationService);

}


private async Task POCOServicesRegistration()

{

ConfigInitialization();


ServiceLocator.Instance.Register<IResourceService, ResourceService>(new ResourceService());

ServiceLocator.Instance.Register<IPhysicsService, PhysicsService>(new PhysicsService());

ServiceLocator.Instance.Register<IEventBus, EventBus>(new EventBus());

ServiceLocator.Instance.Register<IStateMachineService, SimpleStateMachineService>(new SimpleStateMachineService());


var binaryDataService = new BinaryDataService();

await binaryDataService.InitializeAsync();

ServiceLocator.Instance.Register<IDataService, BinaryDataService>(binaryDataService);

}


private void ReleaseResources()

{

Resources.UnloadUnusedAssets();

}

}

}

А вот так вот выглядят все сервисы

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 1 Unity, Российский игрострой, Программирование, Странный юмор, Мат, Длиннопост
Показать полностью 3
[моё] Unity Российский игрострой Программирование Странный юмор Мат Длиннопост
17
1
Asmagor
4 месяца назад

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 0⁠⁠

Я не являюсь программистом (профильное образование - юрист), я никогда не имел никакого отношения к играм, кроме как поиграть.
Данный пост (как и остальное на FB, YouTube) создается с целью заработать денег (на поддержание штанов) - кто сколько сможет, пока игра не будет опубликована в Steam.
Я понимаю и принимаю все риски связанные с данными публикациями т.е. что меня могут просто опередить и выпустить эту игру раньше меня. Ну да ладно - поживём - увидим.

Добрейшего Всем!


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

Канада, Калгари
01.03.2025
Я уже несколько месяцев на LayOff (это когда временно без работы, но трудовые отношения никто не разрывал). Переиграл во всё, что только можно и нельзя, 1191.3 часа в IronOrder1919, V Rising и Valheim со школьниками. Tarkov - э-э-эхххх.... был бы ноут по-мощнее - вообще бы не вылазил из неё. Вот список игр во что играл/ю:

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 0 Unity, Программирование, Российский игрострой, Странный юмор, Мат, Длиннопост



Но, рано или поздно, безделье надоедает* и я начал подумывать, чем бы занятся и заодно позаработать денег. Вариантов - раз, два и обчелся:

1. Доставка еды / Такси. Не канает - нет машины.
2. Перепродажа б/у вещей с Trift stores и GoodWill - объемисто, долгосрочно, перспективно. Но в одно лицо - это труба. Да и вещи там так, расхватывают, словно ты пытаешься у них эту самую шмотку, что ни на есть - последнюю, забрать.
3. И..... и больше нихрена я не умею.

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

Сцука, идея фикс - игра. Итак, ТС, какую же игру ты захотел сделать? Грабить корованы, лол?

Имея на руках ноутбук, мышку, наушники (с микрофоном) :

  • Device name LAPTOP-CFCEROC4

  • Processor Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz 2.21 GHz

  • Installed RAM 12.0 GB (11.8 GB usable)

  • Video GPU:

    NVIDIA GeForce GTX 1050

    Dedicated GPU memory 0.0/4.0 GB

    Shared GPU memory 0.0/5.9 GB

    GPU Memory 0.0/9.9 GB

  • System type 64-bit operating system, x64-based processor

  • Pen and touch No pen or touch input is available for this display

и недюжий интузиазм, я, как мне казалось, начал приобщаться к таинству игроделания.

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

1. Игровой движок. Unity.
Почему Unity? UnrealEngine - выкинуло из редактора из-за нехватки ресурсов. Godot - уже не очень помню почему, но - нет.
Unity Personal редакции позволяет заработать достаточно много 100 000 USD - 200 000 USD. Ссылка - https://unity.com/products/pricing-updates

2. Язык программирования. С#
Много лет назад, когда я был ешё молодым и ходил в КА "Шаг" - я учил С++. Поэтому сильно не выбирал. Кстати, обращаю Ваше внимание, что Unity поддерживает следующие языки программирования: C#, C/C++, Rust, IronPython, Lua, Java, JavaScript, SQL, HTML 5, and CSS

Для дальнейшего понимания, следует сделать небольшое отступление: из чего сделана игра? Каким представлением оперирует Unity?

В Unity есть такое понятие как сцена. Сцену еще можно представить как уровень / локацию, для понимания. Сцена - это контейнер.
Сцена состоит из GameObjects (объектов-контейнеров), которые, в свою очередь, состоят из компонентов. (https://docs.unity3d.com/2022.3/Documentation/Manual/Creatin...)

  1. Код. Скрипты. Тут всё понятно - используем выбранный язык программирования и в бой. Но есть нюанс ))))
    2. 3д объекты, которые состоят из mesh.

    Меш (mesh) — это фундаментальный элемент в 3D моделировании, представляющий собой сетку, состоящую из вершин, рёбер и граней.

3. Текстуры. Включая Skybox
4. Материалы.
5. Шейдеры
6. Аудио файлы (музыка, звуки)
7. Видео файлы (если будешь делать кат-сцены или просто видео)
8. Анимации
9. Текстовые файлы
10. Освещение
..... Вроде всё, на пока - хватит )))

И шо же делать, спросят самые непоседливые. А собственно говоря вот:

1. Unity Game Engine
2. VS Code
3. Blender 4
5. AudioCity
6. MeshLab
7. Photoshop


--------------------------------------------------------------------------------------------------------------
Канада, Калгари
03.03.2025
Полон энтузиазма, готов горы свернуть. "В Ютубе всё есть - полно учебных материалов! Бери - нехочу! Все даром рассказывают как делать игры!" Посмори вот тебе ресурсы:


1. Unity documentation (тут понятно - читать не особо весело, неправда ли?*)
2. Youtube - полно видео уроков. (вот тут прям начало припекать)
3. "Тематические" широко-известные в узких кругах сайты, где можно без регистрации и смс скачать книги! (чуть позже выложу свою коллекцию)
4. Парочка русских сайтов.
5. ИИ
6. GitHub

Штошььь... прямо скажем - не густо. Но глаза боятся - руки делают! (с) И я начал читать книжки.

Дабы не томить сильно:
1. ИИ - если ты не знаешь, что/о чём ты спрашиваешь - получишь чушь в ответ. Поэтому читай, для начала.
2. Youtube - для этих, не побоюсь этого слова - П*дарасов, Большой Буквы, есть отдельный котёл, в котором черти будут их жахать кочергой во все дыхательные и пихательные, пока за этим будет наблюдать стая бешеных и голодных собак.
Но следует быть объективным т.е. иметь холодную голову, горячее сердце и чистые руки, и признать что мне попались 3 - 4 годных товарища. От одного я случайно узнал о шаблоне проектирования - Единая Точка Доступа. Это мне помогло.
3. Книги - это просто поле для инфоциганства. Старые болезни.... Переписывают из книги в книгу одно и тоже. используют теже примеры, никакой новизны.*
*Если успею - выпущу свою книжку про Юнити, сцука, и пусть они все охренеют!

Немного отвлечемся:

Так выглядит "изучение":

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 0 Unity, Программирование, Российский игрострой, Странный юмор, Мат, Длиннопост

Открытые вкладки

UNITY3D. RTS/RPG. Уровень: Бестолочь. Часть 0 Unity, Программирование, Российский игрострой, Странный юмор, Мат, Длиннопост

Книжки, Видео-материалы. На любой вкус и цвет.

В завершении нулевой части:

Самое важное в этой писульке от Федота - с чего следует начать (помимо языка программирования):

1. Шаблоны проектирования программного обеспечения.
3. Архитектура приложений / программного обеспечения.

PayPal аккаунт для пожертвований: stas.vdk@gmail.com

Блять, испанский стыд... с этими пожертвованиями конечно....

Показать полностью 3
[моё] Unity Программирование Российский игрострой Странный юмор Мат Длиннопост
4
2
user10218292
7 месяцев назад
Инди игры

Путешествие по мирам инди-разработки: от идеи до игры, которая покорит сердца⁠⁠

Привет, дорогие читатели! Перед прочтением данной статьи рекомендую подписаться!!!А теперь начнем. Сегодня мы погрузимся в удивительное путешествие по миру инди-игр, где креативность не имеет границ, а каждый разработчик может стать звездой. Вы когда-нибудь задумывались, как рождаются игры? Давайте посмотрим на этот процесс через призму неординарного подхода и вдохновения.

Первая искра: идея

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

Создание прототипа: от замысла к реальности

После того как вы определились с идеей, пришло время создать прототип. Это может быть элементарная версия вашей игры, где не все механики отшлифованы, но основной концепт уже работает. Используйте доступные инструменты — даже простые программы для создания игр, такие как GameMaker или Unity, помогут вам в этом. Чем меньше времени вы потратите на создание прототипа, тем быстрее сможете получить обратную связь!

Обратная связь: ваш лучший друг

Запускайте ваш прототип среди друзей и знакомых. Их мнения помогут вам понять, что нужно улучшить, а что стоит оставить. Не бойтесь критики! Помните, что даже самые известные разработчики начали с ошибок и исправлений. Подумайте о том, как можно сделать игру интереснее и увлекательнее.

Арты и звуки: погружение в атмосферу

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

Запуск и продвижение: шаг в свет

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

Не останавливайтесь на достигнутом

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

Каждый инди-разработчик — это художник, собиратель историй и мечтатель. Не бойтесь следовать за своей мечтой, и, возможно, ваша игра станет самой любимой у игроков по всему миру! Делитесь своими историями и вдохновляйте других на создание уникальных игровых проектов.

И помните: ваша игра — это ваше видение, так что не забывайте быть смелыми и креативными. Удачи в разработке!

Показать полностью
Игры Разработка Российский игрострой Совет Текст
0
87
boev.fm
10 месяцев назад
Лига Геймеров

Коллега делает русскую Дюну⁠⁠

У меня на работе есть очень скромный коллега, который имеет свой пет-проект.

Идея проекта заключается в том, что он делает RTS в стиле сеговской Дюны 2.

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

П.С.: коллега не в курсе того что я здесь разместил его игрушку, по этому я думаю он приятно удивится, если там будет уже 10 человек, а не 8 как сейчас)

https://www.rustore.ru/catalog/app/pn.games.dune
https://t.me/saturn_rts

Коллега делает русскую Дюну Игры, Компьютерные игры, Дюна, RTS, Стратегия, Россия, Российский игрострой, Русский игропром, Игрушки, Gamedev, Telegram (ссылка), Длиннопост
Коллега делает русскую Дюну Игры, Компьютерные игры, Дюна, RTS, Стратегия, Россия, Российский игрострой, Русский игропром, Игрушки, Gamedev, Telegram (ссылка), Длиннопост
Коллега делает русскую Дюну Игры, Компьютерные игры, Дюна, RTS, Стратегия, Россия, Российский игрострой, Русский игропром, Игрушки, Gamedev, Telegram (ссылка), Длиннопост
Показать полностью 3
[моё] Игры Компьютерные игры Дюна RTS Стратегия Россия Российский игрострой Русский игропром Игрушки Gamedev Telegram (ссылка) Длиннопост
24
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии