Пятница, 28 апреля 2017, 16:55

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Страница 1 из 171231617»
Форум игроделов » Записи участника » Storm54 [334]
Storm54Дата: Четверг, вчера, 07:47 | Сообщение # 1 | Тема: Оптимизация для веба?
постоянный участник
Сейчас нет на сайте
Так как наработок у тебя немного, то советую начать писать проект с нуля непосредственно под WebGL. Основные моменты оптимизации описаны в официальной документации. В подобных проектах основной проблемой становится контент, который должен быть приемлемого размера для комфортной игры. Так же стоит помнить, что весь код выполняется в одном потоке, что не позволит сделать плавную подгрузку контента без снижения FPS.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Четверг, 27 апреля 2017, 07:48
Storm54Дата: Четверг, вчера, 07:31 | Сообщение # 2 | Тема: Мне нужна ваша помощь
постоянный участник
Сейчас нет на сайте
Меня интересует, как будет организована защита от читеров: будет ли это исключительно авторитарный сервер или же более сложная система?

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Четверг, 27 апреля 2017, 07:32
Storm54Дата: Среда, 26 апреля 2017, 13:29 | Сообщение # 3 | Тема: А как правильно писать код ?
постоянный участник
Сейчас нет на сайте
Цитата beril ()
очередное напоминание не юзать foreach

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

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

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

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

Память, отведенная под код, будет занимать примерно столько же. Если же рассматривать каждый класс, как наследник от MonoBehavior, который вешается на GameObject в Unity, то это увеличит общее время апдейта, т.к. движок делает несколько проходов по всем объектам и вызывает соответствующие методы (Update, FixedUpdate и т.д.). Если писать свой менеджер, который будет делать тоже самое, то можно выиграть в плане производительности, опуская многие проверки, проводимые движком.

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


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Среда, 26 апреля 2017, 13:33
Storm54Дата: Среда, 11 января 2017, 12:25 | Сообщение # 4 | Тема: OnGUI
постоянный участник
Сейчас нет на сайте
Можно воспользоваться новой системой GUI и там настроить масштабирование. Для Legacy GUI можно модифицировать матрицу (GUI Matrix), а можно просто домножить все числа в скриптах. В любом случае стоит определить, какое разрешение будет использоваться в качестве эталонного и для него настраивать все элементы, а коэффициент масштабирования высчитывать уже в рантайме (current resolution / reference resolution). Так же стоит определиться: будет ли учитываться соотношение сторон в разрешении и, если будет, то какая максимальная погрешность допустима. В зависимости от этого уже задавать порог коэффициентов. В зависимости от сложности элементов, может понадобиться создать несколько вариантов интерфейса, как, например, в Dota 2.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Среда, 11 января 2017, 12:31
Storm54Дата: Вторник, 27 сентября 2016, 09:49 | Сообщение # 5 | Тема: Авторизация, подобно Clash of Clans? Как она работает?
постоянный участник
Сейчас нет на сайте
Нормальной авторизацией можно заняться в самом конце. Просто сделайте логин по ID пользователя без всяких паролей и прочих усложнений. Человек скачивает APK, вводит ID и играет за аккаунт, привязанный к этому идентификатору.
Такой подход поможет быстрее отлаживать проект и сосредоточиться именно на игровой логике.

Проблема кучи твинков обычно решается балансом. В том же Clash Of Clans новичок не в состоянии как-то повлиять на экономику всей игры.

Насчет авторизации в Clash Of Clans: скорее всего, там действительно генерируется UUID и отправляется на клиент.
А привязка осуществляется для того, чтобы была возможность вновь воспользоваться этим аккаунтом, если UUID будет утерян (например при смене девайса)

P.S. Как писали выше: регистрация нового аккаунта - это обычная запись в базу и существуют транзакции куда более требовательные к ресурсам, такие как, запрос на выставление предмета на аукцион.


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Вторник, 27 сентября 2016, 10:04
Storm54Дата: Воскресенье, 14 августа 2016, 17:10 | Сообщение # 6 | Тема: Проблема с поворотами объекта при многократном вращении
постоянный участник
Сейчас нет на сайте
Советую прочитать про Gimbal lock.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.
Storm54Дата: Понедельник, 08 августа 2016, 06:28 | Сообщение # 7 | Тема: Независимый ребенок.
постоянный участник
Сейчас нет на сайте
Код
gameObject.hideFlags = HideFlags.HideInHierarchy;


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.
Storm54Дата: Суббота, 11 июня 2016, 10:48 | Сообщение # 8 | Тема: Как продвигаться на YouTube?
постоянный участник
Сейчас нет на сайте
Извини, конечно, но твою речь слушать невозможно. Найди диктора.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.
Storm54Дата: Четверг, 09 июня 2016, 09:43 | Сообщение # 9 | Тема: Программирование шейдеров в Unity (Добавлен шестой урок)
постоянный участник
Сейчас нет на сайте
Плохо. В уроке много времени было уделено на всякие минорные элементы, как, например, имя шейдера в инспекторе, однако про значения по-умолчанию для параметров ничего не сказано. Про Fallback сказано непонятно что. Причем тут return в программировании? В документации коротко и ясно написано, что при невозможности использовать сабшейдер из текущего шейдера (при отсутствии аппаратной поддержки), будет произведена попытка использовать сабшейдер из указанного в Fallback. И в уроке не должно быть "если я не ошибаюсь". Перед изложением материала необходимо освежить в памяти всю информацию, чтобы не возникало сомнительных моментов.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Четверг, 09 июня 2016, 09:44
Storm54Дата: Вторник, 31 мая 2016, 13:18 | Сообщение # 10 | Тема: Обнуление массива
постоянный участник
Сейчас нет на сайте
Цитата seaman ()
Alloc в куче в два раза медленнее всех предыдущих.

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


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.
Storm54Дата: Вторник, 31 мая 2016, 12:24 | Сообщение # 11 | Тема: Обнуление массива
постоянный участник
Сейчас нет на сайте
Код
using System;
using System.Diagnostics;

namespace Test
{
    public class Program
    {
        private static int[] globalData;

        private static void Main()
        {
            const int cycles = 100;
            const int arraySize = 256 * 256;

            long clearTicks = 0;
            long allocTicks = 0;

            var sw = new Stopwatch();

            globalData = new int[arraySize];
            for (var i = 0; i < cycles; i++)
            {
                sw.Reset();
                sw.Start();

                Array.Clear(globalData, 0, globalData.Length);

                sw.Stop();

                clearTicks += sw.ElapsedTicks;
            }

            for (var i = 0; i < cycles; i++)
            {
                sw.Reset();
                sw.Start();

                globalData = new int[arraySize];

                sw.Stop();

                allocTicks += sw.ElapsedTicks;
            }

            Console.WriteLine("CLEAR TICKS: " + clearTicks + " ALLOC TICKS: " + allocTicks);

            Console.ReadKey();
        }
    }
}


Держите. Постарался воспроизвести более-менее реальную ситуацию. Размер массива 256x256 (размер средней карты во многих RTS) Количество итераций 100 (Массив же будет очищаться постоянно)

У меня получились такие результаты:


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


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Вторник, 31 мая 2016, 13:05
Storm54Дата: Понедельник, 30 мая 2016, 12:47 | Сообщение # 12 | Тема: Обнуление массива
постоянный участник
Сейчас нет на сайте
Извините, конечно, но пишите вы, товарищи советчики, бред. Array.Clear подходит, но стоит понимать, что он очищает массив так же за O(N), где N - длина массива. Конечно, по производительности этот метод будет чуть быстрее, чем реализация с циклом, но по большому счету разница незначительна, т.к. внутри Clear тот же цикл, только без проверки на out of range при доступе к каждому элементу. new int[N] - вообще идиотское решение. Ладно, если память будет выделена на стеке - аллокация не займет много времени, хотя стоит помнить, что в управляемых языках, коим .NET (и его Mono реализация) и является, каждому элементу массива будет присвоено значение по-умолчанию (в данном случае default(int), т.е. 0). В итоге получаем аллокацию плюс Array.Clear внутри. Оно нам надо? Если же выделение будет происходить в куче, то это попросту приведет к дефрагментации памяти, что в свою очередь снизит производительность. Итог: юзать Array.Clear и стараться лишний раз не выделять память, а заранее создать один большой буфер, который будет использоваться во время всей жизни приложения.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Понедельник, 30 мая 2016, 12:52
Storm54Дата: Четверг, 31 марта 2016, 14:44 | Сообщение # 13 | Тема: [3D] Orange Cast
постоянный участник
Сейчас нет на сайте
Озвучка в видео-анонсе ужасная! Сначала голос вообще плохо слышно на фоне музыки, далее он все-таки становится более различимым. Так же "подростковость" голоса портит впечатление. Как я понял, по задумке, в видео пытались изобразить разные колонии, каждая из которых переживает свои проблемы, но на деле же получился какой-то обзор игры от разработчиков, состряпанный на скорую руку. А самое интересное, что в конце ролика, когда остается лишь черный фон, озвучка очень качественная! И, слушая, действительно хороший голос, я начинаю представлять происходящие события. Зачем же было его засовывать в самый конец? Ведь не многие досмотрят до туда - я, например, хотел выключить видео после трети увиденного.
Подведя итог, хочу сказать, что после просмотренного, у меня остались крайне неприятные впечатления: низкое качество видео подразумевает и низкое качество игры, даже, если картинка и хорошая (а она хорошая, хоть и простенькая), то вполне возможно, что оптимизация на никудышном уровне.

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

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


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Четверг, 31 марта 2016, 14:50
Storm54Дата: Вторник, 29 марта 2016, 07:51 | Сообщение # 14 | Тема: Профессиональный композитор | Саунд-дизайнер
постоянный участник
Сейчас нет на сайте
Очень качественное исполнение! Буду признателен, если отправите прайс в ЛС

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.
Storm54Дата: Пятница, 15 января 2016, 07:37 | Сообщение # 15 | Тема: Вопрос-[ответ] по Unity.
постоянный участник
Сейчас нет на сайте
Цитата zisX ()
P.S. Но это все происходит на моем домашнем пк, мб я не так считаю?


Насколько я помню, в Photon Sever по-умолчанию выставлена небольшая задержка перед обработкой пакетов. Этот параметр можно изменить в конфиге сервера.


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.
Storm54Дата: Пятница, 15 января 2016, 07:30 | Сообщение # 16 | Тема: Округ 255. Секреты Бейцухе
постоянный участник
Сейчас нет на сайте
Дизайн уровней, конечно, сильно хромает, но посмотрим что получится.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.
Storm54Дата: Четверг, 07 января 2016, 18:21 | Сообщение # 17 | Тема: не переключаеться платформа
постоянный участник
Сейчас нет на сайте
Необходимо скачать пакет для сборки под определенную платформу. Самый простой способ - скачать unity installer с официального сайта, в нем должно быть все необходимое.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Четверг, 07 января 2016, 18:21
Storm54Дата: Четверг, 07 января 2016, 16:39 | Сообщение # 18 | Тема: Photon Server и Мир
постоянный участник
Сейчас нет на сайте
На клиенте может быть античит, который способен отследить инжект и прочие способы взлома. Другое дело, что модифицируя исполняемый код можно попросту удалить логику античита на клиенте, поэтому абсолютной защиты не существует. Нужно стараться критичные для игры элементы считать на сервере. Например, в World Of Tanks клиентам приходит вся информация о состоянии игрового мира, они же в свою очередь отсылают лишь клавиши управления. Но, если для танков такой подход вполне приемлим, т.к. они достаточно медлительны, то, скажем, для шутера, в котором, требуется мгновенный отклик, приходится использовать сразу несколько алгоритмов для создания иллюзии плавного движения всех объектов.

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


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Четверг, 07 января 2016, 16:41
Storm54Дата: Четверг, 07 января 2016, 13:47 | Сообщение # 19 | Тема: Photon Server и Мир
постоянный участник
Сейчас нет на сайте
Конечно, правильней считать такие вещи на сервере. Лучше всего и движение клиента корректировать в случае серьезных расхождений.

Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.
Storm54Дата: Четверг, 07 января 2016, 10:39 | Сообщение # 20 | Тема: Какая операция быстрее SendMessage или GetComponent?
постоянный участник
Сейчас нет на сайте
SendMessage сам по себе является каким-то костылем и работает всегда медленней, чем GetComponent.
Лично я советую вообще его не использовать, т.к. рефакторинг с такими методами невыносим, да и отследить вызов в некоторых случаях достаточно проблематично.


Более 9 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity3D, PhotonServer
В основном помогаю с C++, C#
Пишите в Л.С.


Сообщение отредактировал Storm54 - Четверг, 07 января 2016, 10:40
Форум игроделов » Записи участника » Storm54 [334]
Страница 1 из 171231617»
Поиск:

Все права сохранены. GcUp.ru © 2008-2017 | Free GIF Animator Рейтинг