ART DOGS
Мы оформляем Steam-страницы для инди-проектов. Помогаем с капсулой, визуалом и упаковкой, чтобы игра выглядела профессионально с первого взгляда.
Что делаем:
— Полный комплект капсул для магазина и библиотеки Steam;
— Оформление фона страницы;
— Разработка логотипов;
— Геймплейные трейлеры;
— Короткие видео (Shorts, Reels, TikTok);
— Текстовое описание, гифки, скриншоты для страницы;
— Ачивки и трейд-карточки;
— Консультации по стилю, геймплею, позиционированию и оформлению;
— Тестирование проектов;
— Любое промо по договорённости;
Формат работы:
Можем выполнить задачи сдельно (по договору) или стать частью команды в формате внутренней студии.
📁 Канал с работами: https://t.me/ART_DOGS_STEAM_DESIGN
📁 Канал с отзывами: https://t.me/OTZIVARTDOGS
Мы оформляем Steam-страницы для инди-проектов. Помогаем с капсулой, визуалом и упаковкой, чтобы игра выглядела профессионально с первого взгляда.
Что делаем:
— Полный комплект капсул для магазина и библиотеки Steam;
— Оформление фона страницы;
— Разработка логотипов;
— Геймплейные трейлеры;
— Короткие видео (Shorts, Reels, TikTok);
— Текстовое описание, гифки, скриншоты для страницы;
— Ачивки и трейд-карточки;
— Консультации по стилю, геймплею, позиционированию и оформлению;
— Тестирование проектов;
— Любое промо по договорённости;
Формат работы:
Можем выполнить задачи сдельно (по договору) или стать частью команды в формате внутренней студии.
📁 Канал с работами: https://t.me/ART_DOGS_STEAM_DESIGN
📁 Канал с отзывами: https://t.me/OTZIVARTDOGS
❤8👍2🔥2
⚡️ Два подхода к организации кода в Unity
Сохрани, чтобы не наступить на грабли новичка и не запутаться в собственном проекте.
✅ Плюсы разделения скриптов:
🔹 Переиспользуемость кода
PlayerMovement, EnemyAI, Inventory — каждый скрипт делает одно дело. Можно брать готовый Movement и использовать в разных объектах.
🔹 Проще тестировать и исправлять
Нашел баг в прыжке? Открываешь только PlayerJump.cs. Не нужно копаться в 1000+ строках монолита.
🔹 Чистая архитектура
Легче расширять: добавил новый скрипт — новая механика готова. Не ломаешь существующий код.
❌ Минусы чрезмерного разделения:
🔸 Сложность управления
10+ скриптов на одном объекте? Придется настраивать связи между ними через GetComponent<> или события.
🔸 Потеря производительности
Частые вызовы GetComponent<> и межскриптовые события могут тормозить, особенно на мобильных устройствах.
🔸 "Ад зависимостей"
Скрипт А зависит от Б, Б от В, В от А... Запутал сам себя.
💡 Золотая середина:
1️⃣ Разделяй по ответственности
Движение → отдельный скрипт
Стрельба → отдельный скрипт
Здоровье → отдельный скрипт
2️⃣ Но не дроби без нужды
Не создавай 10 скриптов для 10 кнопок. Логика UI может жить в одном скрипте.
3️⃣ Используй компонентный подход Unity
Это его философия! Каждый скрипт — компонент с конкретной задачей.
📌 Вывод: разделяй логично, но не фанатично. 3-5 скриптов лучше 15 и лучше 1 монстра на 2000 строк.
💬 А как ты организуешь код? Пиши в комментах!
🔔 Подпишись — еще больше про архитектуру, C# и юнити-лайфхаки.
👉Akrus Games | Unity
Сохрани, чтобы не наступить на грабли новичка и не запутаться в собственном проекте.
✅ Плюсы разделения скриптов:
🔹 Переиспользуемость кода
PlayerMovement, EnemyAI, Inventory — каждый скрипт делает одно дело. Можно брать готовый Movement и использовать в разных объектах.
🔹 Проще тестировать и исправлять
Нашел баг в прыжке? Открываешь только PlayerJump.cs. Не нужно копаться в 1000+ строках монолита.
🔹 Чистая архитектура
Легче расширять: добавил новый скрипт — новая механика готова. Не ломаешь существующий код.
❌ Минусы чрезмерного разделения:
🔸 Сложность управления
10+ скриптов на одном объекте? Придется настраивать связи между ними через GetComponent<> или события.
🔸 Потеря производительности
Частые вызовы GetComponent<> и межскриптовые события могут тормозить, особенно на мобильных устройствах.
🔸 "Ад зависимостей"
Скрипт А зависит от Б, Б от В, В от А... Запутал сам себя.
💡 Золотая середина:
1️⃣ Разделяй по ответственности
Движение → отдельный скрипт
Стрельба → отдельный скрипт
Здоровье → отдельный скрипт
2️⃣ Но не дроби без нужды
Не создавай 10 скриптов для 10 кнопок. Логика UI может жить в одном скрипте.
3️⃣ Используй компонентный подход Unity
Это его философия! Каждый скрипт — компонент с конкретной задачей.
📌 Вывод: разделяй логично, но не фанатично. 3-5 скриптов лучше 15 и лучше 1 монстра на 2000 строк.
💬 А как ты организуешь код? Пиши в комментах!
🔔 Подпишись — еще больше про архитектуру, C# и юнити-лайфхаки.
👉Akrus Games | Unity
🔥10❤1👍1
⚡️ Unity: Интерфейсы в C# — сила контрактов
Интерфейс — это контракт, который гарантирует, что класс умеет делать определённые действия. Неважно, кто его подписал — игрок, враг или бочка. Главное — они все могут выполнить условия контракта.
В интерфейсах в c# не принято делать реализацию функций, свойств, только объявление.
🔥 Зачем это в играх?
Допустим, у тебя есть меч, который может бить врагов и ломать бочки. Без интерфейсов — это ад из
Можно наследовать от любого количества интерфейсов, в отличии от наследования от классов.
Если мы хотим сделать приватное свойство для реализующего интерфейс класса, мы можем не указывать set в свойстве интерфейса
🎯 Реальный пример: взаимодействие с объектами
💡 Два главных плюса:
🔸 Гибкость — добавляй новые разрушаемые объекты без изменения кода меча
🔸 Чистота — избавляешься от гигантских цепочек проверок через GetComponent
🚀 Где ещё использовать?
•
•
•
💬 Используешь интерфейсы в своих проектах? Делися в комментах!
🔔 Подпишись — ещё больше C# фишек для геймдева
Пост помог написать @Nokskiy
👉Akrus Games | Unity
Интерфейс — это контракт, который гарантирует, что класс умеет делать определённые действия. Неважно, кто его подписал — игрок, враг или бочка. Главное — они все могут выполнить условия контракта.
В интерфейсах в c# не принято делать реализацию функций, свойств, только объявление.
🔥 Зачем это в играх?
Допустим, у тебя есть меч, который может бить врагов и ломать бочки. Без интерфейсов — это ад из
if (collider.GetComponent<Enemy>() != null)... С интерфейсами — чисто и гибко.Можно наследовать от любого количества интерфейсов, в отличии от наследования от классов.
Если мы хотим сделать приватное свойство для реализующего интерфейс класса, мы можем не указывать set в свойстве интерфейса
🎯 Реальный пример: взаимодействие с объектами
public class Bullet : MonoBehaviour
{
private const int _damage = 10;
private void CheckHit()
{
//проверка столкновений с IHealth
hitObj.TakeDamage(_damage);
}
}
public class Player : MonoBehaviour, IHealth
{
// Реализация свойства
public int Health { get; private set; }
// Прочие поля
// Прочии свойства
// Прочии функции
// Реализация функции
public void TakeDamage(int damage) =>
Health -= damage;
}
public interface IHealth
{
// Обьявление свойства Health
int Health { get; }
// Обьявление функции TakeDamage
void TakeDamage(int damage);
}
💡 Два главных плюса:
🔸 Гибкость — добавляй новые разрушаемые объекты без изменения кода меча
🔸 Чистота — избавляешься от гигантских цепочек проверок через GetComponent
🚀 Где ещё использовать?
•
IInteractable для взаимодействия с NPC, дверями, предметами•
ICollectable для сбора монет, аптечек, боеприпасов•
ISaveable для системы сохранений💬 Используешь интерфейсы в своих проектах? Делися в комментах!
🔔 Подпишись — ещё больше C# фишек для геймдева
Пост помог написать @Nokskiy
👉Akrus Games | Unity
🔥7❤6👍1
⚡️ 5 C# фишек, которые прокачают твой Unity-код
Сохрани — используешь каждый день, если хочешь писать чисто и современно.
1️⃣ ?? и ??=
📌 ?? — дефолт при null, ??= — инициализация, если объект ещё не создан.
В Unity:
• Подходит для ленивой инициализации компонентов
• Отлично работает с GetComponent() и кастомными системами DI
2️⃣ switch expression
📌 Читается лучше, чем громоздкий switch { case }, особенно в UI-слоях и инспекторных тулзах.
В Unity:
• Используй в кастомных инспекторах, отображении состояний, локализации
3️⃣ Интерполяция строк $""
📌 Быстрее и безопаснее, чем +. Упрощает логи на этапе разработки.
В Unity:
• Используй для логирования, UI-отладчика, вывода инфы в EditorWindow
4️⃣ using var (C# 8+)
📌 Безопасное использование ресурсов — автоматически закроется, даже при исключении.
В Unity:
• Полезно при работе с файлами, AssetBundle, StreamingAssets
• Работает только в .NET 4.x / Unity с C# 8+
5️⃣ readonly struct и in параметры (бонус)
📌 Меньше копий, больше производительности. Актуально в ECS и при передаче больших структур.
💬 Какие из этих ты уже используешь в Unity?
🔔 Подписывайся — будет ещё про Span<T>, LINQ и новые C# фичи в Unity
👉Akrus Games | Unity
Сохрани — используешь каждый день, если хочешь писать чисто и современно.
1️⃣ ?? и ??=
playerName = inputName ?? "Без имени";
list ??= new List<int>();
📌 ?? — дефолт при null, ??= — инициализация, если объект ещё не создан.
В Unity:
• Подходит для ленивой инициализации компонентов
• Отлично работает с GetComponent() и кастомными системами DI
2️⃣ switch expression
string label = state switch {
GameState.Menu => "В меню",
GameState.Playing => "Играем",
_ => "?"
};📌 Читается лучше, чем громоздкий switch { case }, особенно в UI-слоях и инспекторных тулзах.
В Unity:
• Используй в кастомных инспекторах, отображении состояний, локализации
3️⃣ Интерполяция строк $""
Debug.Log($"Игрок: {playerName}, Очки: {score}");
📌 Быстрее и безопаснее, чем +. Упрощает логи на этапе разработки.
В Unity:
• Используй для логирования, UI-отладчика, вывода инфы в EditorWindow
4️⃣ using var (C# 8+)
using var stream = File.OpenRead(path);
📌 Безопасное использование ресурсов — автоматически закроется, даже при исключении.
В Unity:
• Полезно при работе с файлами, AssetBundle, StreamingAssets
• Работает только в .NET 4.x / Unity с C# 8+
5️⃣ readonly struct и in параметры (бонус)
readonly struct DamageInfo {
public readonly int amount;
public readonly Vector3 direction;
}
void ApplyDamage(in DamageInfo info) { ... }📌 Меньше копий, больше производительности. Актуально в ECS и при передаче больших структур.
💬 Какие из этих ты уже используешь в Unity?
🔔 Подписывайся — будет ещё про Span<T>, LINQ и новые C# фичи в Unity
👉Akrus Games | Unity
🔥7👍2❤1
Forwarded from REPUBLIC78
Открыта регистрация на участие в 9-ом сезоне федеральной программы развития молодежного предпринимательства "Я В ДЕЛЕ" в Санкт-Петербурге.
Наша команда основала проект Republic для того чтобы помочь командам в сфере креативных индустрий развить свой продукт.
💬 Из основного, что мы предоставляем всем желающим:
🤩 Для кого?
⌚️ Таймлайн
➡️ Для участия в конкурсе хватит идеи проекта, так что ждем всех желающих. Оставляйте заявку в форме
❗️ РЕГИСТРАЦИЯ ДО 20 МАРТА.
По всем вопросам пишите: @Oleg_Leyfman
Наша команда основала проект Republic для того чтобы помочь командам в сфере креативных индустрий развить свой продукт.
🟢 Предпринимательский курс для разработчиков игр, состоящий из 8 блоков.🟢 Практика выступления перед экспертами в бизнесе.🟢 Личный наставник, который будет вам помогать.🟢 Призовой фонд "Я В ДЕЛЕ" — 1 000 000 рублей.🟢 Летний интенсив по работе с издательствами.🟢 Шоу-кейсы на региональном уровне.
🟢 Для студентов от 18 лет проживающих в Петербурге/ЛО.🟢 Для тех, кто ищет команду или нет проекта.🟢 Для инди-команд с техно-демкой или полноценным проектом.
🟢 21 марта — Открытие🟢 Апрель — Хакатон (аккредитация проекта) и шоу-кейсы.🟢 Май — финальная защита перед жюри и закрытие 9 сезона.🟢 Июнь-Август — Летний интенсив по работе с издательствами.
По всем вопросам пишите: @Oleg_Leyfman
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2
Forwarded from Akrus Games | Unity (卂Ҝ尺ㄩ丂)
⚡️ Unity: шпаргалка по библиотекам в C#
Сохрани эту шпаргалку! Библиотеки — это как суперспособности для твоего кода. Не пиши велосипеды, используй готовые и проверенные решения.
1️⃣ LINQ (Language Integrated Query)
🎯 Для чего: Упрощает работу с коллекциями (массивы, списки). Фильтрация, сортировка, поиск — в одну строку.
💡 Простой пример:
📌
2️⃣ Newtonsoft.Json (JSON.NET)
🎯 Для чего: Самый популярный инструмент для работы с JSON. Сохранение данных настроек, загрузка конфигов с сервера.
💡 Простой пример:
📌 Ставь через Package Manager (NuGet) или из Asset Store.
✅ Итог: Освой LINQ — будешь быстро управлять данными. Подключи Newtonsoft.Json — легко работать с сохранениями и API.
📌 Сохрани, чтобы не забыть синтаксис!
💬 Какие библиотеки используешь ты? Делись в комментариях!
🔔 Подпишись — каждый день полезности по C# и Unity!
👉Akrus Games | Unity
Сохрани эту шпаргалку! Библиотеки — это как суперспособности для твоего кода. Не пиши велосипеды, используй готовые и проверенные решения.
1️⃣ LINQ (Language Integrated Query)
🎯 Для чего: Упрощает работу с коллекциями (массивы, списки). Фильтрация, сортировка, поиск — в одну строку.
💡 Простой пример:
// Найти всех врагов с здоровьем > 50
var strongEnemies = enemiesList.Where(e => e.health > 50);
// Получить список только имён
var names = enemiesList.Select(e => e.name);
📌
using System.Linq; — не забудь эту директиву!2️⃣ Newtonsoft.Json (JSON.NET)
🎯 Для чего: Самый популярный инструмент для работы с JSON. Сохранение данных настроек, загрузка конфигов с сервера.
💡 Простой пример:
// Сериализация объекта в JSON-строку
string json = JsonConvert.SerializeObject(playerData);
// Обратно из строки в объект
PlayerData loadedData = JsonConvert.DeserializeObject<PlayerData>(json);
📌 Ставь через Package Manager (NuGet) или из Asset Store.
✅ Итог: Освой LINQ — будешь быстро управлять данными. Подключи Newtonsoft.Json — легко работать с сохранениями и API.
📌 Сохрани, чтобы не забыть синтаксис!
💬 Какие библиотеки используешь ты? Делись в комментариях!
🔔 Подпишись — каждый день полезности по C# и Unity!
👉Akrus Games | Unity
❤7🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Собираем GAMEDEV-комьюнити 🚨 +бонус
APOLLO MONETIZATION прямое тому подтверждение:всего за полгода доход наших клиентов вырос в 2 раза.
Именно поэтому мы решили построить экосистему для разработчиков.
Эксклюзивно для участников чата мы регулярно проводим:
➡️ Мастер-классы с ведущими экспертами индустрии с интерактивом с аудиторией.
➡️ Q&A сессии по вашим самым актуальным запросам, где каждый вопрос найдет исчерпывающий ответ.
➡️ Бесплатные марафоны по масштабированию проектов.
Спойлер: прямо сейчас готовим коллаб с одной крупной мобильной площадкой, на днях анонс 🤫
Если ты создаешь игры или мобильные приложения — это твой левел-ап в монетизации.
🎁БОНУС: для всех участников чата БЕСПЛАТНЫЙ индивидуальный аудит проекта от экспертов (подробности в закрепе чата)!
🅰️ Присоединяйся к комьюнити: t.me/gamedev_monetization
Настоящие результаты приходят, когда сильное комьюнити объединяется, делится опытом и помогает друг другу расти.
APOLLO MONETIZATION прямое тому подтверждение:
Именно поэтому мы решили построить экосистему для разработчиков.
Эксклюзивно для участников чата мы регулярно проводим:
➡️ Мастер-классы с ведущими экспертами индустрии с интерактивом с аудиторией.
➡️ Q&A сессии по вашим самым актуальным запросам, где каждый вопрос найдет исчерпывающий ответ.
➡️ Бесплатные марафоны по масштабированию проектов.
Спойлер: прямо сейчас готовим коллаб с одной крупной мобильной площадкой, на днях анонс 🤫
Если ты создаешь игры или мобильные приложения — это твой левел-ап в монетизации.
🎁БОНУС: для всех участников чата БЕСПЛАТНЫЙ индивидуальный аудит проекта от экспертов (подробности в закрепе чата)!
🅰️ Присоединяйся к комьюнити: t.me/gamedev_monetization
🔥4❤1
Присылайте свои работы в комментарии!👊
Лучшие выложу здесь через 24 часа!
Присылайте лучше видео. Хороший компрессор https://tools.rotato.app/compress , если не грузит используйте https://github.com/codeforreal1/compressO
Для новеньких поясняю: по сути это бесплатная реклама вашей игры и канала, только если у вас реально крутая игра)
#работыПодписчиков
🎧 Akrus Games | Unity
Лучшие выложу здесь через 24 часа!
Для новеньких поясняю: по сути это бесплатная реклама вашей игры и канала, только если у вас реально крутая игра)
#работыПодписчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Игра подписчика @sollner
Канал: а где
Присылайте свои игры сюда
Akrus Games | Unity
Продолжаю делать десктоп-айдлер игру. Закончил с шейдером, наконец выглядит именно так, я хотел. Начал делать машину состояний. В скором времени будут появляться путники и приносить свои истории.
Сейчас проект переехал на годот, так как он лучше работает с рабочим столом и "виджет"-стилем
Канал: а где
Присылайте свои игры сюда
Akrus Games | Unity
👍7 4🔥3
лопата самая убогая
а топор уже немного получше
ух, последний раз кидал свои работы год назад
Канал: а где
Присылайте свои игры сюда
Akrus Games | Unity
❤6 5🎄3
Внешне я конечно шут, но в душе король!
Терентий @Автор: Акрус
🏵 ОБ ИВЕНТЕ 🏵
Всем хорошей и приятной недели!
Канал: https://t.me/MSwordStudio
Присылайте свои игры сюда
Akrus Games | Unity
This media is not supported in your browser
VIEW IN TELEGRAM
Игра подписчика @viseweb
Присылайте свои игры сюда
Akrus Games | Unity
Drone Battles!Канал: @SuperAmazingStudioRu
В игре вы управляете дроном, который должен остановить вторжение существ из параллельных миров, стремящихся захватить нашу вселенную.
В игре представлено множество уникальных дронов с разнообразным вооружением. Испытайте всех дронов, уничтожай врагов и эпических боссов, добывайте детали для улучшения и становитесь еще сильнее!
Игра уже доступна для регистрации в Google Play. Если вас заинтересовала игра, переходите по ссылке в маркет и жми кнопку регестрации, чтобы не пропустить её выход в релиз и сыграть одним из первых: https://play.google.com/store/apps/details?id=com.SuperAmazingStudio.DroneBattles
Группа студии: @SuperAmazingStudioRu
Присылайте свои игры сюда
Akrus Games | Unity
🔥8❤4 3
This media is not supported in your browser
VIEW IN TELEGRAM
Стандартный
SceneManager.LoadScene вызывает фриз — не годится для нормального проекта. Сделаем правильно: с экраном загрузки, прогрессом и без тормозов.
Пока сцена грузится, крутим анимацию и показываем проценты.
1. Создай пустые объекты Menu и Load, меню и экран загрузки соответственно.
2. Прикрепи к ним необходимый UI
Кнопка должна запускать
LoadScene()using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Play : MonoBehaviour
{
[Header("UI Elements")]
[SerializeField] private Slider progressSlider;
[SerializeField] private TextMeshProUGUI progressText;
[SerializeField] private GameObject start;
[SerializeField] private GameObject load;
// Обновляет слайдер и текст прогресса
void UpdateProgressUI(float progress)
{
progressSlider.value = progress;
progressText.text = $"{progress * 100:F0}%";
}
// Вызывается при нажатии кнопки "Играть"
public void LoadScene()
{
start.SetActive(false);
load.SetActive(true);
StartCoroutine(LoadAsync(1));
}
// Асинхронная загрузка сцены с отображением прогресса
IEnumerator LoadAsync(int sceneName)
{
AsyncOperation operation = SceneManager.LoadSceneAsync(sceneName);
operation.allowSceneActivation = false; // не переключаемся сразу
// Ждём, пока загрузка не достигнет 90%
while (operation.progress < 0.9f)
{
float progress = Mathf.Clamp01(operation.progress / 0.9f);
UpdateProgressUI(progress);
yield return null;
}
// Достигли 90% — показываем 100% и делаем паузу
UpdateProgressUI(1f);
yield return new WaitForSeconds(0.5f); // можно заменить на ожидание нажатия
// Разрешаем переход на новую сцену
operation.allowSceneActivation = true;
}
}
operation.progress идёт до 0.9, а последние 10% — активация сцены. Поэтому масштабируем
progress / 0.9f и уже на 1.0 переводим.Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥6 3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17🤯4❤3👍3😁2 1
Forwarded from NOBICE (Random Beast 🏆)
Розыгрыш 5 подарков 🤪
Условия розыгрыша - подписка на каналы:
Итоги будут 28 числа🗓
Условия розыгрыша - подписка на каналы:
NOBICE
AkrusGames
UnStar Studio
SuperAmazingStudio
SuperAmazingStudioRu
LumaPlay
Итоги будут 28 числа
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6😱2 2👎1
Доброе утро, разработчики!
Всем удачной рабочей недели!🎉
Всем удачной рабочей недели!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥3 2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12 6🔥4