id44474404 id44474404

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

...
TheDarkestRed TheDarkestRed

Экспериментируем с рэгдолами 🎮🧟🤺🐺

lehha95 lehha95

Открыли страницу в Steam! Добавляйте в список желаемого!

https://store.steampowered.com/app/1355780/

romandviski romandviski

Спасибо, добрый человек.

Rummy_Games Rummy_Games

Доброго субботнего вечера! Сегодня мы поделимся с вами видео процесса разработки одного из противников (“Роя”) в нашей игре, в рамках #saturdayscreenshot, а также кратко делимся ЛОРом игры.

...
id44474404 id44474404

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

...
Jusper Jusper

В GMS сильно поменялась структура функционала, но не все корректно мигрируется из старых проектов. Если тебе не критичны новинки, то переходить на него стоит только с новым проектом.

Kazirath Kazirath

Насколько я понял проще установть последнюю версию перед 2.3 и продолжить работать под ней. Новинка не стоит свеч после переделки скриптов

Kazirath Kazirath

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

...
alexprey alexprey

Учитывая то, что написано в данной статье обратно включить это не получится и придется действительно обернуть код скриптов в функции.

Кратко из документации:

  • Раньше скрипты были индивидуальными и изолированными
  • ...
  • ...
  • ...
  • ...
...
PallSwarrow PallSwarrow

Спасибо за комменты, оч приятно)
Про ссылку тупанул - пока разбираюсь с сайтом)

alexprey alexprey

Жду линк на потестить и следующий девлог о разработке)

Jusper Jusper

Если есть прототип, было бы здорово выложить на него ссылку.
Не хватает игровых скриншотов.

Jusper Jusper

Raised, оригинал на Eurogamer.
Скорее всего, ирония.

Raised Raised

Это была такая ирония или Фортнайт тогда действительно был небольшим проектом?

id44474404 id44474404

alexprey, спасибо !)

alexprey alexprey

id44474404, поставить курсор на нужное место и у картинки нажать "вставить"

id44474404 id44474404

alexprey, в тех публикациях были были в перемешку слова и фотки, я докинул несколько скринов, но их нигде не видно, как добавить фотографии ?

alexprey alexprey

id44474404, ага, больше информации -> больше обсуждения да и в целом понимания о проекте)
В любом случае, добро пожаловать!))

id44474404 id44474404

Хм, больше инфы?) Ок

Логотип проекта Unity

Сшиватель мешей для Unity

Сшиватель мешей для Unity

Предисловие

В недавнем скриншотнике мы говорили, что работали над оптимизацией. Slash Polygon: Tournament предназначен прежде всего для мобильных платформ, поэтому вопрос производительности для нас почти номер 1.

Mesh Composer

Мы сделали небольшой скрипт, который сшивает меши в один, экономя отрисовку на устройстве. Инструкция использования простая:

Пример структуры объектов — Сшиватель мешей для Unity — Unity — DevTribe: инди-игры, разработка, сообщество (mesh composer, tool, Скрипт, скрипт)
Пример структуры объектов
  • Создайте пустой Game Object
  • В качестве Child к созданному объекту добавьте те модели, которые хотите сшить (для них должен использоваться 1 материал, иначе от сшивание нет смысла)
  • Добавьте компонент на Game Object - Mesh Composer
  • (опционально) Для подчиненных объектов можно включить Mesh Collider
Можно было еще включить нашу отрисовку теней, но она кастомная и вам не понадобится.
Компонент на объекте — Сшиватель мешей для Unity — Unity — DevTribe: инди-игры, разработка, сообщество (mesh composer, tool, Скрипт, скрипт)
Компонент на объекте

Вcпомогательная информация:

  • Total Childs (сколько подчиненных объектов в группе)
  • Total Verts (сколько в итоге вертексов получается в сшитом объекте)
  • Ругань, если подчиненные сшитые объекты имеют разный материал
  • Ругань, если максимальное количество вершин в одном сшитом объекте > 65536

Код

using UnityEngine;

namespace Visual
{
    [RequireComponent(typeof(MeshFilter))]
    [RequireComponent(typeof(MeshRenderer))]
    public class MeshComposer : MonoBehaviour
    {
        public MeshFilter MyFilter;
        public MeshRenderer MyRenderer;
        public MeshFilter[] InternalFilters;
        public Material SharedMaterial;
        [SerializeField] private bool _useMeshCollider;

        private void Awake()
        {
            Compose();
        }

        private void Compose()
        {
            var combineMeshes = new CombineInstance[InternalFilters.Length];
            for (int i = 0; i < combineMeshes.Length; i++)
            {
                combineMeshes[i].mesh = InternalFilters[i].mesh;
                combineMeshes[i].transform = InternalFilters[i].transform.localToWorldMatrix;
                InternalFilters[i].gameObject.SetActive(false);
            }

            MyFilter.mesh = new Mesh();
            MyFilter.mesh.CombineMeshes(combineMeshes, true, true, false);
            MyRenderer.material = SharedMaterial;

            if (_useMeshCollider)
            {
                var collider = gameObject.AddComponent<MeshCollider>();
                collider.sharedMesh = MyFilter.mesh;
            }
        }
    }
}
using System.Linq;
using UnityEditor;
using UnityEngine;

namespace Visual.Editor
{
    [CustomEditor(typeof(MeshComposer))]
    public class MeshComposerInspector : UnityEditor.Editor
    {
        private MeshComposer _instance;

        private void OnEnable()
        {
            _instance = (MeshComposer) target;
        }

        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            _instance.MyFilter = _instance.GetComponent<MeshFilter>();
            _instance.MyRenderer = _instance.GetComponent<MeshRenderer>();

            // fetch childs
            _instance.InternalFilters = _instance.GetComponentsInChildren<MeshFilter>()
                .Where(filter => filter != _instance.MyFilter).ToArray();

            EditorUtility.SetDirty(_instance);

            EditorGUILayout.HelpBox($"total childs:{_instance.InternalFilters.Length}", MessageType.Info);

            if (_instance.InternalFilters == null || _instance.InternalFilters.Length == 0)
                return;

            var totalVerts = _instance.InternalFilters.Select(filter => filter.mesh.vertices.Length)
                .Aggregate((total, next) => total += next);

            var messageType = MessageType.Info;
            if (totalVerts > uint.MaxValue)
                messageType = MessageType.Error;

            EditorGUILayout.HelpBox($"total verts: {totalVerts}", messageType);

            var useSameMaterial = true;

            var material = _instance.InternalFilters[0].GetComponent<MeshRenderer>().sharedMaterial;
            foreach (var meshFilter in _instance.InternalFilters)
            {
                var rend = meshFilter.GetComponent<MeshRenderer>();
                if (rend.sharedMaterial != material)
                {
                    useSameMaterial = false;
                    break;
                }
            }

            if (!useSameMaterial)
            {
                EditorGUILayout.HelpBox($"Internal meshses uses different materials, must be the same!",
                    MessageType.Error);
            }
            else
            {
                _instance.SharedMaterial = material;
            }

            EditorUtility.SetDirty(_instance);
        }
    }
}

Скачать Mesh Composer

Два готовых скрипта для использования в Unity.

Результат

В видео показан игровой процесс с устройства. В видео стоит ограничитель на максимальный FPS - 30 кадров. Количество Batches и Tris уменшилось на порядок, игра из конкретно нестабильного куска гов билда превратилась в нормальный рабочий прототип.

Смотрите также:


Комментарии

Здесь еще никто не оставил комментарий

Справка