?

Log in

No account? Create an account
12 окт, 2008 @ 20:13 Идеальный язык для программирования игр
Предлагаю мозговой штурм.
Идеальный язык для программирования игр. Какой он?
Какие он должен обеспечивать техники, чтобы наиболее удачно соответствовать повседневным нуждам геймдев программиста?
Что необходимо, чтобы эффективно воплощать в коде все ходовые приемы и концепции игр?

Например: сериализация для save/load game, описание деревьев и манипулирование ими как first-type data (наподобие поддержки XML в EcmaScript и ActionScript), перегрузка операций для пользовательских типов (для создания функциональных высокоуровневых абстракций) и т.д.

Всех приглашаю к круглому столу. Не стесняйтесь фантазировать. :)
topright:
(Удалённый комментарий)
[User Picture Icon]
From:niroo
Date:Октябрь, 12, 2008 17:48 (UTC)
(Ссылка)
Да не, ты чё писать в питоне серьёзное что-то, удавица. Один пробел не в том месте и всё.. ищи свищи...
(Ответить) (Уровень выше) (Ветвь дискуссии)
(Удалённый комментарий)
[User Picture Icon]
From:topright
Date:Октябрь, 12, 2008 18:40 (UTC)
(Ссылка)
Безусловно, так!
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:elmm
Date:Октябрь, 12, 2008 17:56 (UTC)
(Ссылка)
Мдя... и напишет человек на VB, под DX свою супер-пупер игру.
Что он с ней потом делать будет?
Распечатает исходники и повесит в рамочку на стену? :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:8vmr
Date:Октябрь, 12, 2008 18:54 (UTC)
(Ссылка)
Примерно так и будет :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 12, 2008 19:07 (UTC)
(Ссылка)
Ваша позиция примерно ясна (юзайте VBxDX и все книги уже написаны), но. Она не возбуждает. :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:8vmr
Date:Октябрь, 13, 2008 15:33 (UTC)
(Ссылка)
Это вообще то стеб был... :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 14, 2008 15:34 (UTC)
(Ссылка)
Ок. :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:kefeer
Date:Октябрь, 12, 2008 17:57 (UTC)
(Ссылка)
The Next Mainstream Programming Language: A Game Developer's Perspective. Tim Sweeney (основатель Epic Games; человек, стоящий за движком Unreal).

в power point:
http://www.cs.princeton.edu/~dpw/popl/06/Tim-POPL.ppt

в pdf:
http://www.st.cs.uni-sb.de/edu/seminare/2005/advanced-fp/docs/sweeny.pdf
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 12, 2008 18:43 (UTC)
(Ссылка)
Спасибо за интересную ссылку. Маститый автор и звучное название статьи - прочитаю, не откладывая в долгий ящик.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:kefeer
Date:Октябрь, 12, 2008 18:04 (UTC)
(Ссылка)
Очень полезная вещь - reflection.

Но на сегодня есть три более-менее распространенных совсем не mainstream языка, которые поддерживают reflective programming. Это Lisp, Factor, и лучше всех - Smalltalk.

Кое-что есть в Java и Erlang (загрузка кодов на лету). Но в Smalltalk'е есть традиция иметь при себе ide с возможностью на лету смотреть и изменять в ручную состояние объектов.
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 12, 2008 18:48 (UTC)
(Ссылка)
Я как раз читал эту статью про reflection перед тем, как запостить этот топик. :) Конечно, языков, которые поддерживают отражение в той или иной степени, гораздо больше, чем пятеро. Что мы вообще ждем от рефлекшена в геймдеве?
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:kefeer
Date:Октябрь, 12, 2008 20:27 (UTC)
(Ссылка)
Скорее всего вы не про тот рефлекшн читали, а про его куцие обрывки.

В геймдеве это дает короткий цикл разработки - внесенные в игру изменения сразу видны и плейабельны, можно посмотреть состояние всего и вся, проверить почему то или иное не срабатывает и т.п.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 12, 2008 20:48 (UTC)
(Ссылка)
Хорошо для мониторинга и отладки приложения, согласен. Чтобы сразу видеть изменения, прекрасно подойдет какой-нибудь IDE с принципом WYSIWYG. Разработка игры как часть игрового процесса. :)

Но вы, как мне кажется, назвали далеко не все языки, которые в полной мере поддерживают отражение. Тот же Ruby ускользнул. Как вы проводите грань между языками с "настоящим отражением" и "куцими обрывками"?
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:kefeer
Date:Октябрь, 12, 2008 21:51 (UTC)
(Ссылка)
За ruby, признаюсь не скажу. Не фанат.

Настоящее reflection я своими глазами видел только в Squeak. Прям сразу, прям для всех данных и кода.

Что это дает? Простоту разработки. Стандарт де-факто сейчас цикл edit-compile-run-debug. В Squeak его нет. Есть edit, run и debug одновременно.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:eugenius_nsk
Date:Октябрь, 14, 2008 05:21 (UTC)
(Ссылка)
Squeak очень хорош для экспериментов и постановки правильного видения мира :-), но не очень подходит для промышленной разработки (в смысле - поставленной на поток).
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:cobanbk
Date:Октябрь, 12, 2008 20:16 (UTC)
(Ссылка)
самый лучший язык для создания игры - тот которым ты владееш в совершенстве!
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:barabanus
Date:Октябрь, 13, 2008 11:01 (UTC)
(Ссылка)
Мое мнение - этот язык кроме всего прочего должен быть эргономичным и синтаксически-эстетичным. Сейчас мой выбор на Lua.
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 13, 2008 11:13 (UTC)
(Ссылка)
Это важные характеристики. Тут я добавил бы еще лаконичность, но не в ущерб читабельности. Баланс между ними и дает эргономичность.
Lua луаконичен, да.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:drontik
Date:Октябрь, 13, 2008 11:33 (UTC)
(Ссылка)
Не особо. Squirrel - читабельный lua.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 13, 2008 11:50 (UTC)
(Ссылка)
Слышу впервые. Им кто-нибудь пользуется?
Про Squirrel в Вики: Both compiler and virtual machine fit together in about 6k lines of C++ code. Заинтриговало.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 13, 2008 12:14 (UTC)
(Ссылка)
Не нашел особой разницы в синтаксисе.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:drontik
Date:Октябрь, 13, 2008 12:40 (UTC)
(Ссылка)
1) Там есть классы
Реализованы они примерно так же, как в lua - через таблицы. Но в луа они получаются нечитабельны совершенно.
2) Там есть C-шные операторы ("|","&" вместо "or", "and") и фигурные скобки вместо then-end. Весьма способствует в случаях, когда скрипты пишет "обычный" программист.
3) Главная, на мой взгляд, фича сквирла: там по-другому устроена работа с слотами таблиц. В lua, взятие отсутствующего поля таблицы просто возвращает nil. В сквирле, это runtime error. Для проверки "есть ли слот в таблице" есть специальный оператор in. И разделены понятия "присвоение в поле" и "создание поля", первое пишется как tbl.a = 10, второе как tbl.a <- 10;
В результате - есть страховка от ошибок вида "перепутал букву в имени переменной", которые в Lua довольно тяжело искать.
4) Это, конечно, фича для смешанных проектов (C++ для движка, скрипт для игрового кода). В сквирле есть отдельно целые числа и float, что существенно улучшает биндинг. В lua только один тип number.

В остальном, сквирл и луа очень похожи.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 13, 2008 14:55 (UTC)
(Ссылка)
Тогда надо вчитываться, да. Для других заинтересовавшихся я нашел это: http://wiki.squirrel-lang.org/default.aspx/SquirrelWiki/LuaComparedToSquirrel.html
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:xproger
Date:Октябрь, 13, 2008 15:10 (UTC)
(Ссылка)
Нирвану смотрели? Вот такой, чтобы геймдизайнер тупо сидел и надиктовывал чего куда и сколько, а не как )
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 13, 2008 18:08 (UTC)
(Ссылка)
:)))
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:slatazan
Date:Октябрь, 13, 2008 17:39 (UTC)
(Ссылка)
Извини, Топрайт, но вопрос у тебя ошибочный.
Ответ на него не поможет делу.
Язык - враг твой :)

// Лично я хочу делать игры в ран-тайм-конструкторах ...
// Параметрическое програмирование как в драм-машине (музыка)
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 13, 2008 18:15 (UTC)
(Ссылка)
Я знал, что будет такой комментарий, Слатазан. :)
Вопрос намеренно поставлен кардинальным ребром вдоль категорического. Поэтому язык - идеальный.
Чтобы был ран-тайм конструктор (т.е. IDE, как в Delfi шоб формочки перетаскивать), нужен в основе всего подходящий язык. Поэтому идеальный - язык.
Чтобы было параметрическое программирование, нужна база данных параметризуемых шаблонов. Поэтому язык - со стандартной библиотекой.
Язык - наш друг. :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
From:ev_genus
Date:Октябрь, 13, 2008 19:12 (UTC)

Идеальная бумага для написания стихов

(Ссылка)
Лирическое отступление
Предлагаю штурм (кто чем может, тот пусть тем и штурмует).
Идеальная бумага для написания стихов. Какая она?
Какая у неё должна быть жесткость, чтоб удобно было мять в руке перед удовлетворением повседневных нужд писателя?
Что необходимо изобразить на её упаковке что б поэту не было скучно в процессе удовлетворением повседневных нужд?

Всех приглашаю к круглому столу. Не стесняйтесь фантазировать. :)


По существу. Если вы хотите рассуждать в такой плоскости то тип (и содержание) языка (хотя не понятно что вы вкладываете в это понятие) зависит от жанра игры.

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

Для аргументации. Перед созданием нового языка ответьте на вопросы:
1. Куда вы выбросите шейдеры, которые пишутся на определённых языках и только на них?
2. Куда деть С? а С++? Ведь на них написано 80% всего полезного для геймдева.
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 13, 2008 23:07 (UTC)

Re: Идеальная бумага для написания стихов

(Ссылка)
Прежде всего, напоминаю вам: в мозговом штурме генерируют идеи, а не критикуют их. Если вы не согласны с постановкой вопроса (намеренно радикальной), не надо окрысиваться и брать ругательный тон, а то вас примут за тролля. Лучше попросите автора уточнить для вас его поинт. Я благодарен вам за такой длинный комментарий, вы старались. :))) Давайте продолжим общение конструктивно.

Это я вам говорю как человек с высшим техническим образованием в сфере компьютерных наук, написавший диплом на тему разработки логического языка программирования. :) К сожалению, я работаю не в игровой индустрии, потому что в Латвии ее почти нет :(, но я много лет интересуюсь разработкой игр и именно поэтому стал программистом.

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

Не надо выбрасывать шейдеры и приплюснутый код. Вообще, C++ - замечательный язык, и я тоже не избежал его интеллектуально-монструозного обаяния. Но у C++ есть известные недостатки. Уже есть D, блестящий, аккуратный, стильный, а в нем - возможность подключать весь код, написанный на C++ (так что багаж сохраняется). Автор D интересно критикует C++ и, по идее, преодолевает его недостатки в своем языке. Короче, языкам, принятым де-факто в геймдеве, есть куда расти, чтобы обеспечить нас с вами эффективными техниками и решениями для большинства ходовых геймдев-задач.

Java и Perl - языки общего назначения, но первый ориентировался на сетевые распределенные приложения, а второй с самого начала позиционировался как язык для обработки текстов. Представьте себе универсальный язык, в то же время заточенный под нужды и повседневные задачи геймдев-программиста. Каким он может быть? Люди хотят эстетичность и лаконичность синтаксиса (вы видели коды boost или loki?), отражение, удобное для отладки и экспериментирования с игровыми данными (экспериментировать приходится часто), domain-specific конструкторы игр и goal-oriented interface из Нирваны (вот уж точно не постеснялись фантазировать! :). Посмотрите презентацию Tim Sweeney. Вот обо всем этом я и хотел бы поговорить.
(Ответить) (Уровень выше) (Ветвь дискуссии)
From:(Анонимно)
Date:Октябрь, 14, 2008 00:11 (UTC)

Re: Идеальная бумага для написания стихов

(Ссылка)
Вы изъясняетесь, используя такие понятия, что складывается не лесное мнение о вашей осведомленности. Уж простите, так выглядит. Свойство языка это не наличие там библиотек. А такие вещи как наличие или отсутствие множественного наследования. Библиотеки в наше время можно прикрутить к любому языку. (И я рад что вы упомянули boost. Значит boost::python для вас не будет пустым звуком).

Также вы очевидно путаете язык программирования и средство разработки (IDE). О проектировании вообще ничего небыло сказано.

Ещё во всех крупных проектах решает способ построения внутренней абстрактной структуры данных. Это лежит как бы вне языка, но всё же некоторые вещи в этом языке так или иначе влияют. Например, возможность динамической компиляции, или возможность хранения кода в виде данных.

От себя.
Люблю питон, так как лучше пока ничего не нашел.
Люблю С++ как вид современного ассемблера. Моё мнение - писать всё на С++ путь извращенцев и задротов (а не написать ли мне код который я сам потом прочитать не смогу?).
Люблю детские поделки и попытки типа Lua и т.п., они очень забавляют.

Не люблю языки общего назначения (Жаба, До-диез). Ну разве что для написания вспомогательных инструментов (хотя для этого и питон не плох). В остальном они одинаково хороши для всего и полностью не дееспособны в частных случаях.

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

удобное для отладки и экспериментирования с игровыми данными (экспериментировать приходится часто), domain-specific конструкторы игр и goal-oriented interface из Нирваны (вот уж точно не постеснялись фантазировать! :).

Вот в этом согласен на все 100%. Гейм дизайнер должен иметь наиболее удобный инструмент изменения игрового мира. Именно изменения уже живущего игрового мира, а не создания нового с нуля. Никакой художник не может себе представить картину полностью, с точностью до мазка. Он постоянно отходит подальше что б подумать над следующим шагом.
Но зачем это вплетать в язык? Создание игры и создание движка - разные задачи. Абсолютно разные. Программист, даже игровой, не должен морочить себе голову вопросами как вычисляется количество повреждения в зависимости от навыков, оружия ... бла-бла-бла (какое ужасное предложение - пока дописал аж скучно стало) Это задача геймдизайнера, скриптёра и т.п.

Посмотрите редактор уровня из кризиса. Не об этом ли вы хотели поговорить?

Если вас интересует язык для задания внутриигровой логики, могу кинуть десяток ссылок на уже существующие.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 14, 2008 11:08 (UTC)

Re:

(Ссылка)
Большое искушение пошутить на тему "не лесного мнения". Вы из леса? Кстати, заодно изучите правила правописания не с именами прилагательными. Чтобы у людей складывалось лестное впечатление о вашей элементарной грамотности. ;)

Извините, но у вас монотонное и бестолковое отношение к собеседнику. Как вы себе представляете профессионального дипломированного программиста, который не знает разницы между языком и IDE, не знает о проектировании? :))) Просто бред. А вы умеете пользоваться мышкой? :))) Я не против дальнейшего общения с вами, если вы выберете конструктивный тон.

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

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

На тему IDE: я считаю, что от языка во многом зависит, насколько хорошие IDE для него можно создать. C++ очень сложен для разбора, и посмотрите, какую подчас невразумительную диагностику выдают его компиляторы. В случае Flash: язык предоставляет стандартные библиотеки графики, звука, на которые могут опереться IDE. Например, Adobe Flash, заточенный под дизайнеров и художников.

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

На тему зачем вплетать это в язык: я с вами согласен.

На тему языков для игровой логики: их гораздо больше чем десяток, но популярных можно сосчитать на пальцах одной руки. Поставьте вопрос так, и вы лучше поймете, о чем я хочу поговорить. :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
From:ev_genus
Date:Октябрь, 14, 2008 13:24 (UTC)
(Ссылка)
... тут находился ответный гон

Ну опять 25.

На тему IDE: я считаю, что от языка во многом зависит, насколько хорошие IDE для него можно создать. C++ очень сложен для разбора, и посмотрите, какую подчас невразумительную диагностику выдают его компиляторы. В случае Flash: язык предоставляет стандартные библиотеки графики, звука, на которые могут опереться IDE. Например, Adobe Flash, заточенный под дизайнеров и художников.

Flash - не язык, это среда (Delphi тоже кстати не язык). Стандартные библиотеки - не свойство языка и едва ли его часть.

IDE не для языка. (Ах это моё монотонное отношения. Бестолковый я. Горе мне, горе) IDE для языка - текстовый редактор, а то о чём вы пишете - средство разработки.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 14, 2008 15:33 (UTC)
(Ссылка)
Читайте определение IDE, вы не знаете, что это такое.
Я не говорил, что Flash - это язык.
Стандартная библиотека может быть описана как часть стандарта языка или в виде отдельной спецификации. В первом случае она безусловно часть языка, во втором - тоже, но с оговоркой. Следовательно, наличие стандартной библиотеки, её состав и богатство - свойство языка.
(Ответить) (Уровень выше) (Ветвь дискуссии)
From:ev_genus
Date:Октябрь, 14, 2008 21:13 (UTC)
(Ссылка)
ЦИТАТА №1: В случае Flash: язык предоставляет стандартные библиотеки графики, звука, на которые могут опереться IDE. Например, Adobe Flash, заточенный под дизайнеров и художников.

ЦИТАТА №2: Я не говорил, что Flash - это язык.

Ну чё? А чё? Я тоже ничего не говорил. Меня тут и небыло вообще.

ЦИТАТА №3: Чтобы был ран-тайм конструктор (т.е. IDE, как в Delfi шоб формочки перетаскивать), нужен в основе всего подходящий язык.

Наличие формочек и окон как таковых не относится к языку.

PS. Хватит штурмовать мне мозг.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 15, 2008 05:20 (UTC)
(Ссылка)
Вам всё надо разжевывать, как маленькому? "В случае [технологии] Flash: язык [ActionScript]". Вы все-таки тролль, ваши полуграмотные комменты идут в игнор.
(Ответить) (Уровень выше) (Ветвь дискуссии)
From:ev_genus
Date:Октябрь, 15, 2008 13:53 (UTC)
(Ссылка)
Теперь понятно почему в вашей стране такая ситуация с геймдевом...
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:gineer
Date:Октябрь, 31, 2008 06:36 (UTC)

Re: Идеальная бумага для написания стихов

(Ссылка)
Вы хорошо прокоментировали слабые стороны написанного в стартопике, но...
это в принцыпе несложно, коментировать с позиции "оно все неправильно, потому что не похоже на то как обычно это делается".
гораздо сложнее придумать и предложить что-то новое, подвергаясь риску быть осмеянным большинством со стереотипным мышлением, большинством, которое уверено что "все уже сделано до нас и без нас".
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:gineer
Date:Октябрь, 30, 2008 16:40 (UTC)

пять копеек

(Ссылка)
вот здесь http://community.livejournal.com/i_future/199554.html

начатая мною тема, по схожему направлению

есть еще у меня в журнале

думаю могу быть достаточно заинтерисованным и аргументированным собеседником по части языков, так как не равнодушен к этой тематике
то есть, и за рамками указанной темы, если она чем-то не понравится
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:topright
Date:Октябрь, 31, 2008 17:50 (UTC)

Re: пять копеек

(Ссылка)
Я рад встретить такого просто драгоценного собеседника. :) Первым делом - во френды. Сейчас я только что с работы и устал, однако постараюсь поскорее найти время, чтобы прочитать ваши посты. Ваша запись в i_future - да, это интересно.
(Ответить) (Уровень выше) (Ветвь дискуссии)