innuendo
> смысл US в том, чтобы быстро менять геймлогику
До этого её еще надо написать. А с этим мудацким анриал скриптом эта задача растягивается в 5 раз и становится крайне нервной.
WISHMASTER35
> Теперь даже для простого скрипта придется писать .h и .cpp файлы (:: Наверно
> главная головная боль с++ от которой никуда не деться.
> А какой компилятор он будет использовать?
ты хоть видел анриал скрипт?
StiX
> До этого её еще надо написать. А с этим мудацким анриал скриптом эта задача
> растягивается в 5 раз и становится крайне нервной.
Интересно, а можно пару примеров?
StiX
> > смысл US в том, чтобы быстро менять геймлогику
> До этого её еще надо написать
Как бы смысл в том, что уже есть решение - его нужно подправить под текущую задачу
ufna
> Интересно, а можно пару примеров?
Присоединяюсь :)
StiX
> ты хоть видел анриал скрипт?
мельком когда-то видел. А что?
ufna
> Интересно, а можно пару примеров?
native скрипты. Добавил\убрал что-то помеченное как native и да здраствует перегенерация здоровенного хедера (у нас в проекте он занимал под 160к строк), в котором объявленны все native классы. Соответственно необходимо долго ждать компиляцию С++ кода и еще 2-3 минуты - скриптов.
WISHMASTER35
> мельком когда-то видел. А что?
Когда-то видел и работал с ним - это две большие разницы. Ты высказался в таком ключе, что писать на С++ хуже чем на US, не имея при этом опыта работы с последним.
StiX
> native скрипты. Добавил\убрал что-то помеченное как native и да здраствует
> перегенерация здоровенного хедера (у нас в проекте он занимал под 160к строк),
> в котором объявленны все native классы. Соответственно необходимо долго ждать
> компиляцию С++ кода и еще 2-3 минуты - скриптов.
Ну жесть просто :) Конечно, когда ты меняешь native - так и будет, кто в этом сомневался ? И как часто для геймлогики нужно было менять native ?
> Ты высказался в таком ключе, что писать на С++ хуже чем на US, не имея при этом
> опыта работы с последним.
Не имеешь проблем с C++ style memleak, не имееш проблем с порчей памяти - уровень вхождения снижается и тд.
Ты правда думаешь что US сделали лишь бы
подложить свинью ? :)
innuendo
> И как часто для геймлогики нужно было менять native ?
Всегда. Я работал над ММО проектом. Нужен был нейтив, что бы меньше тормозили сервера. Нужен был нейтив, что бы было сложнее реверсить клиент - что очень без проблемно делается для голого unreal script.
innuendo
> Не имеешь проблем с C++ style memleak
Хм. Я никогда в жизни не имел проблем с мемликами на С++.
С порчей памяти - это у всех есть. Но оно почти всегда довольно быстро находится и исправляется.
innuendo
> Ты правда думаешь что US сделали лишь бы
> подложить свинью ? :)
нет конечно. Но итог таков - что он оказался свиньей. Технологии программирования далеко шагнули с конца 90-х, а анриал скрипт, застрял в позапрошлом тысячелетии. Я имею ввиду тулзы. Черт возьми, ихняя идэ для написания скриптов была разработано сторонней компанией. Я уже молчу о других благах цивилизации.
innuendo
> Не имеешь проблем с C++ style memleak, не имееш проблем с порчей памяти -
> уровень вхождения снижается и тд.
Вот интересно, те кто пугают мемликами и порчей памяти - сами то хоть их видели где-то серьезно? Я вот нет, а говнокодю еще так. Кроме того - а нафига пользователям работать с голой памятью? Умные указатели давно завезли, для нелюбящих их синтаксис сто лет как есть typedef, для нелюбящих их в принципе есть система идентификаторов (как сделано в том видео на предыдущей странице).
Уровень вхождения в С++ без указателей (вообще если без навыков) - неделя (я писал свой первый рогалик как раз через неделю как взял книгу, указатели и ооп я еще не понимал). Этого достаточно чтобы писать скрипты
war_zes
> Вот интересно, те кто пугают мемликами и порчей памяти - сами то хоть их видели
> где-то серьезно?
Видел, очень мало хорошего :)
> Уровень вхождения в С++ без указателей (вообще если без навыков) - неделя (я
> писал свой первый рогалик как раз через неделю как взял книгу, указатели и ооп
> я еще не понимал). Этого достаточно чтобы писать скрипты
Самая простая задачка - пройтись по всем entities на уровне, проверить на признак и вызвать какой-нибудь метод
StiX
> Всегда. Я работал над ММО проектом.
Очень показательный пример. Если брать малолитражку для гонок F1, то можно потом жаловаться - плохие конструкторы сделали тормозной мобиль. Правда, в городе малолитражка будет полезнее :) А многих проектов не нужно каждые пять минут native менять
> Хм. Я никогда в жизни не имел проблем с мемликами на С++.
Повезло
> нет конечно. Но итог таков - что он оказался свиньей
Вот как раз из-за этой свиньи многие вещи стало делать гораздо приятнее-быстрее
> Я имею ввиду тулзы. Черт возьми, ихняя идэ для написания скриптов была
> разработано сторонней компанией. Я уже молчу о других благах цивилизации.
Про IDE согласен, да
innuendo
> Самая простая задачка - пройтись по всем entities на уровне, проверить на
> признак и вызвать какой-нибудь метод
Итераторы есть. Их ведь никто через new/delete не зовет. А еще foreach и auto
for each (auto f in foo) { if ( f->i) f->foo( ); }
При этом можно возвращать не указатель из контейнера, а ссылку - я не про &, а про специальный класс обертку который и содерит реальный указатель:
class Foo { void foo() { m_foo->foo( ); } FooImpl *m_foo; }
Вот еще причина, почему будущее за теми движками кто вставляет нативные ЯП:
http://habrahabr.ru/post/211576/
В каком еще движке можно прикрутить свой собственный скриптовый язык?
А ведь это расширяет круг пользователей - нравится шарп, пиши на шарпе, нравится JS, пиши на нем, нравится lua пиши на ней, хочешь свой язык, напиши и используй.
Также и тут, ведь С++, а значит можно взять ту же луа, прикрутить, и дальше на ней работать. А разработчикам движка для этого и делать ничего не надо. То есть очередной плюс перехода на С++. Ну вот смогли бы вы прикрутить к US луа?
innuendo
> А многих проектов не нужно каждые пять минут native менять
Вот как я дал ссылку выше, нативный язык позволяет прикрутить любой ненативный, который удобней разработчику и на котором он и будет писать
war_zes
> Вот еще причина, почему будущее за теми движками кто вставляет нативные ЯП:
> http://habrahabr.ru/post/211576/
С головой всё в порядке? В статье прикручивают Lua для работы через C#, при чём здесь вообще нейтив? Наоборот статья наглядно демонстрирует, как без помощи укзателей и прочих крестограблей можно написать игру в прямом эфире.
Ну и ещё пара умных мыслей оттуда же:
написание квестов, скриптовых сценок и т.п. — не должно требовать перекомпиляции кода. Это геймдизайнерская задача. А никакая геймдизайнерская задача не должна требовать лазанья в код. Это — аксиома грамотного построения кода игры.
C# может все что любой другой скриптовой язык и любая прикрутка луа и других скриптов к шарпу всегда будет бессмысленной и вызывать недоумение.
StiX
> Я работал над ММО проектом. Нужен был нейтив, что бы меньше тормозили сервера.
А при чём здесь сервера, мы же про клиентскую часть говорим. Что там с серверами история совершенно отдельная, там можно писать на чём угодно, хоть на NodeJS. Кстати, то, что сейчас многие активно на него переходят говорит о том, что в прямых руках ничего особо не тормозит.
war_zes
> Итераторы есть. Их ведь никто через new/delete не зовет. А еще foreach и auto
Начнём с начала. Нужно как-то получить эти самые entity, чтобы их перебрать
Тема в архиве.