- Мне пришла в голову идея создать свою собственную игру в 3D, осенью 2023 года, а именно 30 ноября. Я был новичком в разработке игр на Unity, до этого делал игры только на Construct Classic/2/3. Изначально эта игра вообще была как, тестовая, личная игра, которая не была бы доступна никому и она предназначалась только для обучения на C# в Unity.
Игра доступна на Яндекс.Играх - https://yandex.ru/games/app/285095?lang=ru
Разработка Игры.
В игре на момент 2 декабря 2023 года уже были разработаны несколько моделей, анимации, звуки, а также NPC, но и конечно же хватание предметов, как в игре Half Life 2. По началу шло всё как по маслу, игра делалась пусть и часами и днями, но не возникали какие-либо трудности. Я планировал эту игру выпустить к Новому Году, ибо мне казалось, что это идеальное время для выпуска хоррор-игры, где события разворачиваются где-то в глубинке больницы, которая находится в зимней тайге.
Возникли уже первые проблемы, когда начал видоизменять игру, когда начал делать более продуманный NPC. Продуманный NPC должен был уметь:
- Ходить в разные точки на сцене, а когда увидит игрока -> побежать за ним, а если потеряет из виду, то забудет про него.
С истечением времени и эта механика NPC менялась и пришла такой, какой она есть в игре только в Мае 2024 года.
На момент 26 декабря 2023 года, я начал понимать, что не успею доделать игру. В игре было готово:
- Первая игровая сцена.
- Скример.
- Механики взаимодействия игрока с игровым миром.
- Тестовый NPC
- Куча предметов.
Но, этого было недостаточно. Мне хотелось доделать NPC, а также доработать визуальную составляющую игры, что невозможно было мне сделать как новичку до Нового Года, учитывая, что до него осталось не так уж и много времени.
Как я делал игру будучи новичком?
- Ещё летом 2023 года я посмотрел 9-часовой ролик Романа Сакутина по языку C#, который как раз-таки и использует движок Unity. Практиковался я по нему в Windows Forms, Консольном приложении, а также смотрел видео-уроки по нему и как с ним работать в Unity. Работа с ним мне до 30 ноября казалась слишком сложной и будто надо было быть Гуру C# разработки всего и вся. Ответ: Нет, не надо быть Гуру, чтобы спокойно программировать на C# в Unity.
После того, как я начал работать в Unity над своей игрой, то прибегнул к пользованию Нейросетей и видео-уроков на Youtube. Что оказалось полезным и что могу лично вам порекомендовать при разработке? Какие есть нюансы? А что лучше? Давайте разбираться.
Нейросети
Я использовал нейросеть в Telegram. Вот мой один из запросов:
Как сделать управление для персонажа от первого лица на Unity?
Ответ:
Для создания управления персонажем от первого лица в Unity, вам понадобятся следующие шаги:
1. Создайте модель персонажа или используйте готовую модель из Unity Asset Store.
2. Добавьте камеру, чтобы создать вид от первого лица. Убедитесь, что камера находится внутри модели персонажа и смотрит в том же направлении, что и персонаж.
3. Настройте скрипт управления. Создайте новый скрипт (например, "PlayerController") и прикрепите его к объекту персонажа. В этом скрипте вы можете использовать ввод с клавиатуры или контроллера для управления движением и обзором.
Пример простого скрипта для управления персонажем от первого лица:
```csharp
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 5.0f; // Скорость передвижения
public float sensitivity = 2.0f; // Чувствительность камеры
CharacterController characterController;
float moveFB;
float moveLR;
float rotX;
float rotY;
void Start()
{
characterController = GetComponent<CharacterController>();
}
void Update()
{
// Управление передвижением
moveFB = Input.GetAxis("Vertical") * speed;
moveLR = Input.GetAxis("Horizontal") * speed;
Vector3 movement = new Vector3(moveLR, 0, moveFB);
movement = transform.rotation * movement;
characterController.Move(movement * Time.deltaTime);
// Управление обзором
rotX = Input.GetAxis("Mouse X") * sensitivity;
rotY -= Input.GetAxis("Mouse Y") * sensitivity;
rotY = Mathf.Clamp(rotY, -60f, 60f); // Ограничение обзора по вертикали
transform.Rotate(0, rotX, 0);
Camera.main.transform.localRotation = Quaternion.Euler(rotY, 0, 0);
}
}
```
Это всего лишь простой пример скрипта, который обрабатывает управление движением и обзором от первого лица. В реальном проекте вам может понадобиться больше функциональности, такой как обработка коллизий, анимации и многие другие детали.
Результат
Управление персонажем работало некорректно.
Есть другой запрос:
Как сделать событие, когда объект касается другого с конкретным тегом? В коде на C# в Unity
Ответ
Для обработки столкновений объектов в Unity с определенным тегом можно воспользоваться коллайдерами и скриптами. Вот пример кода на C# для обработки столкновений объектов с определенным тегом:
```csharp
using UnityEngine;
public class CollisionHandler : MonoBehaviour
{
public string targetTag = "YourTargetTag";
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == targetTag)
{
// Обработка столкновения с объектом, имеющим указанный тег
Debug.Log("Collision with object tagged: " + targetTag);
}
}
}
```
В этом примере `CollisionHandler` - это скрипт, который вы можете прикрепить к вашему объекту в Unity. В скрипте определяется тег, который вы хотите отслеживать (`targetTag`). Затем в методе `OnCollisionEnter` проверяется тег объекта, с которым произошло столкновение. Если тег соответствует указанному, то выполняется определенное действие.
Не забудьте также добавить тэг к вашему объекту в Unity, чтобы скрипт мог корректно обрабатывать столкновения.
Надеюсь, этот пример поможет вам создать событие при столкновении с объектом, имеющим определенный тег. Если у вас есть дополнительные вопросы или нужна помощь с каким-то другим аспектом Unity, пожалуйста, не стесняйтесь спрашивать!
Результат
Да, всё сработало. Код написан правильно, да и тут ничего сложного в целом нет, всё легко и понятно. Думаю, даже новичку или человеку, который не особо смыслит в программировании поймёт, что здесь написала Нейросеть.
- Говоря о Нейросети и её использовании, могу сказать, что в написании ИИ она имеет проблемы. Не совсем корректно и правильно она пишет код подходящий конкретно для вашего ИИ. Исключением может быть, если вы написали запрос в полных подробностях:
Какие компоненты есть.
Что должен уметь ИИ.
Какие особенности в его поведении должны быть.
Что он может, а что не может.
- Также стоит обратить внимание и на то, какую именно нейросеть вы используете. Можете это протестировать задав один и тот же запрос нескольким нейросетям.
Видео-Уроки
По большей части они оказались полезнее чем нейросети. Навряд ли вам нейросеть пояснит как сделать к примеру:
NPC, как в TABS, чтобы был с физикой, но в то же время и бегал и дрался и открывал двери и не был как какой-то робот.
Но, к сожалению, есть и не совсем хорошие видео-уроки, где даётся слишком мало информации, где плохо преподносится информация, где код написан по колхозному. Опять же, это зависит от того, кого вы смотрите. Смотрите хороших Ютуб-разработчиков. Советую смотреть всех, но если вы чувствуете что-то неладное, у вас не получается или же вам не понятно, что объясняет данный человек, то попробуйте найти то же самое, только у другого человека. И не важно, хоть этот человек будет школьником, сорокалетним дядей или ноунеймом с Stack Overflow/Форума/Ютуба.
Разработка
8 Января 2024 года я опубликовал данный ролик. Всё было почти готово, кроме пары механик, NPC, концовки, графики, а также: оптимизации. Оптимизация - самая важная составляющая для каждой игры. Моя игра не была оптимизирована должным образом и требовалась в доработке, и полировке графических моментов.
- В последующие месяца вплоть до Мая 2024 года я работал на ИИ, а также над доработкой сцен, их детализацией.
- Трудности были с ИИ, он и до сих пор не совершенен, но для себя я почеркнул важные моменты при работе с ИИ. Всегда проверяйте: Теги, Слои, а также саму логику ИИ, если у вас конечно же что-то не работает. Собственно, можно сказать, что разработка затянулась как-раз из-за этих трудностей, мне было ужасно дискомфортно от того, что я делаю вроде бы всё правильно, но именно в моей игре это не работает, отсюда: выгорание на месяц, частые отказы от продолжения разработки игры и т.д.
Справился я с этими сложностями благодаря книгам по: бизнесу, психологии и разработке видео-игр - они меня вдохновляли и вдохновляют и до сих пор.
Подготовка на Яндекс.Игры
При разработке игры, я хотел хорошей графики, чего и смог добиться с помощью:
Post-Proccessing.
- Но, нужно ли это было для Яндекс.Игр?
Меня ни капли не смущал контингент игр на Яндексе.
Яндекс Игры - это самая такая низша, для самых начинающих разработчиков, где выкладывается тонна игр разных жанров, и преимущественно для: Детей.
- Что хочется ещё отметить, что Яндекс особо не хочет продвигать вашу игру, если она жанра: Хоррор.
Мою игру можно было сразу хоронить, учитывая, что я решил её выложить на Яндекс.Игры, ибо она:
- Хоррор.
- Требовательная.
- Не хайповая.
Модерация Яндекс.Игр
13 мая я загрузил и отправил игру на проверку на Яндекс.Игры.
Поговаривают, что на Яндекс Играх невозможно пройти с первого раза модерацию.
Модерацию я не прошёл с первого раза. Очень активно общался с Поддержкой Яндекса. И на мой взгляд, она показалась мне очень дружелюбной и отзывчивой. Так что, если у вас: что-то и случилось с игрой, вам нужно уточнить вопрос, протестировать игру, подать заявку в "Популярное", попросить совета по разработке той или иной механики, в которой задействована реклама - вам к Яндекс Поддержке. Один раз модератор при проверке моей игры написал замечание, что у меня якобы есть орфографические ошибки в "Как играть", но это оказалось ошибочным.
Ждите, что вам отклонят из-за того, что в русской версии вы написали, что передвижение на WASD, что все фразы для каждой локализации внутри видео должны быть переведены и т.д. На самом деле, причин по которым, вам могут отклонить игру: множество.
Совет: Перед отправкой на модерацию, дайте поиграть Яндекс Поддержке в вашу игру, попросив о том, чтобы они проверили быстренько вашу игру, не нарушает ли она каких-либо правил. Со мной это работало и с вами тоже сработает.
- Мне отклоняли игру по причине: Низкая производительность.
И тут уже конечно же мой косяк, и вот вам совет, если и делаете 3D-игру, то оптимизируйте её максимально, настолько, насколько это вообще возможно. Вы можете добавить настройки графики, но и добавить соответствующее предупреждение о том, что игра может тормозить и виснуть при определённых настройках. В моей игре самой плохой для WebGL настройкой были тени. Если при тенях было обычно 13 тысяч батчей, то без максимум 900 батчей. Батчи - вызовы отрисовки видеокартой задаваемых ей запросов. Чувствуется разница, не так ли?
Сколько заработал? Стоит ли выкладывать подобные игры на Яндекс Игры?
Заработал я за неделю копейки, смешные и печальные в это же время - копейки. Заработал за неделю: 10 рублей. Да-да, именно 10 рублей. В мою игру особо никто не играл, никто не прошёл её до конца, никто не поиграл в неё более 30 минут. И что самое наверное печальное, так это то, что в мою игру сыграло больше иностранцев, чем наших русских пользователей. Сыграло в мою игру: 200 человек.
Доход: 10 рублей. Игроков: 200 человек.
Срок разработки: с 30.10.23 - 23.05.24 (7 месяцев)
- 7 Месяцев! 7 Месяцев делал эту игру и заработал какие-то жалкие 10 рублей. Это ужасная и печальная ситуация, и поэтому я планирую выпустить игру на VK Play, где буду её продавать за не дорогую цену.
Я не рекомендую делать масштабные по производству игры. Вы останетесь: Без нервов, с потерянным временем.
- Выкладывайте: казуальные игры - если хотите хорошо зарабатывать.
С вами был создатель Godair Studio!
Пишите в комментариях своё мнение, и не забывайте делиться о таких постах с: друзьями, близкими.
До скорых встреч)
Следить за нашими играми можете в:
VK - https://vk.com/godairstudio
Telegram - https://t.me/godairstudio