порт Корсаров на Андроид

пятница, 19 декабря 2025 г.

Не интесно становиться

Помните фильм про пиратов, когда они по взрощению в свой лагерерь увидели, что их поселение было сожено? Вот у меня примерно такое же чуство. Что делать? Где базироваться? и т.д.

Сначало googleusercontent.com - Error 403 из-за чего более 100 сообщений относящиеся к разработке адд-она, патчей и дополненой отправились на дно, начал заливать изоброжения на сторонний хостинг, повторение истории, еще и РНК со своим ТСПУ и блокировка itch

Разработка и так велась в соло, а с такими припонами, не интесно становиться, от слова совсем.

пятница, 19 сентября 2025 г.

понедельник, 18 августа 2025 г.

Как получить значение переменной из другого скрипта


Посмотрел на то, что умеет нейросеть Gemini, сижуи и думаю, а стоит ли вообще замарачиваться написанием мануалов по скриптам? Если кому-то потребуеться код который был использован в сборке, тотже Chat GPT все разложит по шагам. 

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

═══════⚓═══════

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

Шаги:

1. В скрипте, где находится переменная (например, ScriptA):

2. Объявите переменную как public, чтобы она была доступна из других скриптов.

public class ScriptA : MonoBehaviour

{

public float myFloatValue = 10.0f;

}

3. В скрипте, который получает значение (например, ScriptB) - объявите переменную для хранения ссылки на другой скрипт:

public ScriptA scriptAInstance;
 
// Или другой тип скрипта, который содержит нужную переменную

4. Получите ссылку на экземпляр другого скрипта:

  • Через инспектор: Перетащите объект с ScriptA на слот scriptAInstance в инспекторе ScriptB.
  • Программным путем (например, через FindObjectOfType или GetComponent):
// Пример получения по типу скрипта

scriptAInstance = FindObjectOfType<ScriptA>();

5. Получите значение переменной.

float receivedValue = scriptAInstance.myFloatValue;

Debug.Log("Полученное значение: " + receivedValue);
👉В скрипте ScriptB для использования полученого зачения нужно использовать имя переменой receivedValue, а ни myFloatValue из скрипта ScriptA.

Важно:
  • Убедитесь, что объект, на который ссылается scriptAInstance, существует и имеет прикрепленный ScriptA.
  • При использовании namespaces, в скрипте ScriptB в директиве using необходимо указать выбранное пространсвенное имя заданное в ScriptA, чтобы компилятор мог его найти.
  • Если вы используете FindObjectOfType, убедитесь, что ScriptA был создан и активен на сцене, когда выполняется ScriptB.

суббота, 2 августа 2025 г.

Marine part 0.03 - Wind


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

SeaDogs Android
Визуализация ветра

При этом, не зависимо от того включена визуализация ветра или нет, ветер взаимодействует с кораблем:
  • изменяет скорость, 
  • поворачивает реи при смене галса,
  • разворачивает флаги, 
  • наполняет паруса.
Корсары на Андроид
Поворот рей, левый галс

Download

Системные требования (рекомендуемые):
  • Операционная система: Android версии 11 (API 30) или выше;
  • Процессор: ARM64;
  • Графический API: OpenGL ES 3.0+ или Vulkan;
  • Оперативная память: 1 Gb или больше.

Скачать можно здесь или через приложение Mitch тут. 
  • Вес: 29 Mb

четверг, 17 июля 2025 г.

Морская часть 0.02 - ARM64


Задался вопросом об архитектуре процессора с которым работаю. 64-битные процессоры хороши в 32-битовых вычислениях и без проблем запускают созданную игру, но зачем выпускать 32-битную игру в 64-битоной эре?
  • Процессор: ARMv7 с поддержкой Neon (32-bit) или ARM64что вы думаете по этому поводу?
Download

Скачать можно здесь или через приложение Mitch тут.

четверг, 10 июля 2025 г.

Giscus

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

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

пятница, 20 июня 2025 г.

Морская часть 0.01 - Next Gen

Корсары на Андроиде
Next Gen

Аргх! Кто здесь? А это ты морской волчара... Слышал кому-то не терпится отправиться к далеким берегам Хайрока, Скалшораз и Гранда Авилии. Только не лги, что это не ты и об этом ни чего не знаешь... Я по твоим глазам все вижу...  Ну что ж, если не боишься пройти сквозь шторм Бискайского залива и взять командование кораблем на себя, то это приключение, как раз для тебя!

═══════⚓═══════

Все что здесь увидите, было создано при помощи стандартного конвейер рендеринга BRP, несмотря на то, что Unity в своей шестой версии отказалась от него в пользу URPно обо всём по порядку.

В начале 2020 года Unity презентовала свой новый конвейер рендеринга для мобильных телефонов и портативных консолей URP (Universal Render Pipelineи сделала она это ни кабы как, а при помощи демонстрации его работы в проекте Boat Attack. Это шикарная презентация. Просто шикарная. Особенно, если запускаешь игру на своем телефоне и воочию видишь графику, какую можно получить, да еще в 3D, если использовать URP, даже если у тебя слабое железо (телефон). 

вторник, 11 марта 2025 г.

Парадокс в Next Gen

Как я провел месяц

Возвращаюсь с Unreal обратно в Unity на Built-in. Выбранная стратегия продвижения универсального конвейера рендеринга у Unity - это полный провал.

воскресенье, 23 февраля 2025 г.

Экспорт модели из 3D Max в Unity

Корсары Андроид
Новая модель Николаса Шарпа v 0.5

В 3D Max в отличии от Unity поверхность отображается в обе стороны, а в Unity только в одну

вторник, 11 февраля 2025 г.

30 vs 60 FPS


Вечный холиварн... Одни говорят, что для комфортной игры вполне хватает 30 FPS, киберспортсменам подавай 120  FPS, иначе катку затащить не смогут, любители синематографа вообще утверждают, что человеческий глаз не может распознать более 24 кадров в секунду. Но давайте сначала разберемся, сколько кадров сможет отрисовать наш экран, только уже ни монитора, а нашего телефона. В этом нам поможет AIDA64. Заходим в Отображение и ищем строчку Частота обновления 

Redmi Note 8

Правда, сейчас телефоном с частотой обновления экрана 120 Ghz ни кого не удивишь. Тем не менее, не смотря на все это дело, Unity выставляет частоту обновления экрана для мобильных телефонов - 30 FPS, нет не потому, что разработчики приверженцы одной из сторон спора, это сделано специально, для экономии заряда батареи. В настройках "Player Settings..." параметрами V sync count  частоту обновления экрана уже не изменить, поменять на другое значение можно только через скрипт:
using UnityEngine;

public class My60FPS : MonoBehaviour

{
    void Start()

    {

Application.targetFrameRate = 60;

    }

 }
Вешается на любой объект в сцене, на пример на камеру. В данном случае, частота обновления экрана вместо 30 станет 60 FPS, но следует помнить, что оптимизацию сцены ни кто не отменял, будет 60, если загрузка графического процессора дает возможность это сделать.

пятница, 7 февраля 2025 г.

Итоги пре-афьфа теста

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

"Почему?" - споите вы. Да собственно ответ можно найти в последнем коде этого сообщения, думаю ни кто не обратил на него особого внимания, все прочитали и пошли дальше. Знаете о чем там говориться? Об одном еще одной платформе под названием WebGl, но уже с приставкой mobail. Которое и отбило все желание дальше заниматься портом.

По итогу pre-alpha теста я могу сказать лишь одно, что WebGL для демонстрации, что получается сделать в процессе разработки ни куда не годиться: 

  • Плохая кроссбраузерность, такие браузеры, как Firefox, Opera, вообще отпадают;
  • Плохая производительность, низкий FPS, об этом поговорим чуть позже;
  • Плохая совместимость, если говорить про шейдеры и не приходить на французский, то я лучше воздержусь от комментариев; 
  • Особенности кодирования, вплоть до мозгового штурма, как переделать код, который 5 минут назад корректно работал в десктопной версии, корректно заработал и тут.

пятница, 31 мая 2024 г.

Build престал чесаться


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

Тем не менее:

Проверка доступности сайта в интернете из разных точек - 2ip.ru

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

среда, 22 мая 2024 г.

Изображение для сенсорной кнопки

использовать картинку для сенсорной кнопки

Для того чтобы можно было использовать картинку для сенсорной кнопки. Нужно выбрать  изображение и в Инспекторе у поля Texture Type выставть значение: Sprite (2D and UI).

среда, 15 мая 2024 г.

Пред Альфа v 0.07

Корсары на Андроид

Занявшись портированием игры "Корсары: Проклятье дальних морей" на Андроид я хотел сделать управление, которое реализовано в таких мультиплатформенных хитах, как Assassin’s Creed IV: Black Flag, Uncharted 4, Rise of the Tomb Raider. И хочу сказать, что у меня это получилось!

Что нового:
  • Отключил сенсорные стики для теста нового управления на ПК;
  • Отключил курсор мыши, чтобы снять ограничение камеры рамками игрового поля (экрана);
void Start() { Cursor.lockState = CursorLockMode.Locked; // Блокировка курсора }
  • Отключил анимацию шага назад.*

Что получилось сделать:
  • Подключить скелетную анимацию к модели Николоса Шарпа;
  • Создать управление с 4 степенями свободы: вперёд/назад, влево/вправо, рыскание и тангаж.
  • Разворот персонажа в направление движения, как выше упомянутых играх;

Клавиши управления:
  • Клавиши "Esc" - включить курсор, чтобы можно было закрыть вкладку (игру);
  • Клавиша "Enter" - зайти и выйти из помещений;
  • Клавиши W,A,S,D и клавиши Стрелок - движение персонажа;
  • Правая кнопка мыши - бег.

Вес: 
  • 10,6 Mb.
* Анимацию шага назад думаю, можно будет включить в боевом режиме при абордаже.

P.S. Прыжок (пятая степь свободы) под вопросом т.к. препятствий, которые нужно припрыгивать в игре нет, от слова совсем.

четверг, 2 мая 2024 г.

Пред Альфа v 0.06a

SeaDogs на Андроид
Хайрок вход в Магазин

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

вторник, 23 апреля 2024 г.

Пред Альфа v 0.06

Корсары на Андроиде
Вход в Верфь

Что нового:
  • Новые локации Верфь и Магазин;
  • Добавлена информационная табличка для отображения имен NPC и названий локаций (как в оригинале);
  • Отключен скрипт скрытия сенсорного управления при запуске игры в браузере настольного компьютера для теста сенсорной кнопки (таблички). Клавиши управления персонажем с клавиатуры остались прежними.

Что получилось сделать:
  • Отображение имен персонажей и названий помещений в правом верхнем углу при приближении Николаса Шарпа;
  • Добавить анимацию появления и исчезновения информационной таблички (потом думаю можно будет переделать в что-то более оригинальное);
  • Табличка кликабельная, вход в помещения осуществляется по клику;
SeaDogs Android
Помещение магазина Хайрока

  • Затемнение экрана при смене локации (очень быстрая загрузка, чтобы можно было хоть как-то сориентироваться, что уже находиться в другой локации, создал искусственный экран загрузки, для паузы);
  • Написать имена персонажей и названий помещений шрифтом log-russ (из оригинала);
  • Коллизию потолка для тангажа камеры в пределах комнаты.
Исправления:
  • Модель для задании коллизии не позволяла подойти ни к дверям дворца губернатора, ни отойти от городски ворот при приближении к ним в плотную;
  • Настройки шейдера не отображал полностью головной убор английских стражников.
Вес  сборки:
  • 10,9 Мб

четверг, 4 апреля 2024 г.

Установка шрифта с кириллицей

Настройки TextMeshPro для установки шрифта с кириллицей

Просто, обычным перетягиванием, поставить понравившийся шрифт с кириллицей в нельзя. Обязательно во время установки нужно в поле Character Sequence прописать код: 0400-04ff 
Если же нужно использовать кириллицу вместе с латиницей, то нужен код: 0000-04ff , иначе работать не будет.

среда, 6 марта 2024 г.

Пред Альфа v 0.05


Что получилось сделать:

  1. Полностью пересобрать сборку; 
  2. Cтруктурировать и оптимизировав код;
  3. Перевести текстуры с формата (.tga) в формат (.png);
  4. Добавить отдельную модель для задании коллизии города;
  5. Провести оптимизацию сцены указав процессору на статичные объекты для облегчения отрисовки.

В результате:

  • Batches упал с 4700 до 1060;
  • FPS увеличился с 245 до 480;
  • Вес сборки уменьшился с 8,5 Mb до 7,5 Mb.
Что нового:
  • Включил отображение теней (в оригинале такого нет);
  • Добавил четырех стражников. Двое у ворот и ещё двое у входа во дворец губернатора;
  • Задал коллизию для каждого стражника (вспомнил про нее перед самой сборкой, поэтому выделил отдельным пунктом);
  • Для избежания одновременного и визуально одинакового проигрывания анимации у стражи,  разделил ее на две части. Первая часть зациклена, вторая часть проигрывается через определенное время (установленное для каждого стражника).

Проблема c изображениями


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

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

Я уже говорил в комментариях Gremlyn'у, и повторюсь еще раз, что об остановки разработки add-on'a жалеть не стоит, компания Adobe не зайдя на рынок мобильных устройств свернула разработку Flash Player'a не смотря на его потребность у миллиардной аудитории. А о сообщениях не связанных с репозиторием на  GitHub'е  желать не стоит тем более. Поэтому прошлые сообщения решил не восстанавливать.

суббота, 2 марта 2024 г.

Отображение тени объекта

Включение отбрасывание тени объектом

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