Язык программирования для рогалика.

Темы, связанные с проектированием и программированием roguelike-игр

Модераторы: Sanja, Максим Кич

Аватара пользователя
Sanja
Администратор
Сообщения: 791
Зарегистрирован: 24 ноя 2006, 12:25
Откуда: Новосибирск
Контактная информация:

Сообщение Sanja » 05 май 2007, 00:36

Блин, ещё одну библиотеку написали. Теперь на C++. RoguelikeLib

v0l0sat1y
Сообщения: 59
Зарегистрирован: 11 мар 2007, 13:21
Откуда: Беларусь, Минск
Контактная информация:

Сообщение v0l0sat1y » 05 май 2007, 20:02

Да, адская библиотека просто. Особенно прилагающаяся демка.

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

моё "ня" по этому поводу

Сообщение Харука-тян » 06 май 2007, 16:30

раз уж вопрос кто как тентаклями гвозди вбивает - расскажу о себе^^ Мучаюсь, пишу интерпретатор для собственного языка^^ Правда это будет только Scripting Engine, а так на Delphi пишу... уже закончила графический движок и звуковой. и механику.
Оффтоп: были б спрайты - выдала бы демку. а пока не нарисую еще 200 спрайтиков - не покажу...
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
BreakMT
WANDER Team
Сообщения: 933
Зарегистрирован: 27 ноя 2006, 12:16

Сообщение BreakMT » 06 май 2007, 17:14

:shock:
Харука, если мне не изменяет память ты же на си писала. Помню еще надо мной потешалась, над дельфинарием :roll:

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Re: моё "ня" по этому поводу

Сообщение Alchemist » 07 май 2007, 02:34

Харука-тян писал(а):раз уж вопрос кто как тентаклями гвозди вбивает - расскажу о себе^^ Мучаюсь, пишу интерпретатор для собственного языка^^ Правда это будет только Scripting Engine, а так на Delphi пишу... уже закончила графический движок и звуковой. и механику.
Оффтоп: были б спрайты - выдала бы демку. а пока не нарисую еще 200 спрайтиков - не покажу...
Не мучайся, есть фриварный с открытыми исходниками интерпретатор Pascal под Delphi - "Innerfuse Pascal Script™ 3.0":
Innerfuse Pascal Script is a free scripting engine that allows you to use most of the Object Pascal language within your Delphi projects at runtime. Written completely in Delphi, it's composed of a set of units that can be compiled into your executable, eliminating the need to distribute any external files.
Ссылка: http://remobjects.com/page.asp?id={9A30 ... BBE7E302E6}

Очень качественно сделанный продукт, интерпретатор шикарный, поддерживает компиляцию в байт-код, что позволяет делать фишки в духе TES3 Morrowind: при редактировании в БД скажем написал скрипт, тут-же откомпилировал его и сохранил в БД - и текстом и кодом, а при загрузке игры из БД поднимаешь только компилированный байт-код и по необходимости выполняешь его уже махом без лишней работы по парсингу текста. Рекомендую ибо фри и опен-сурс, и еще профессиональный - сделан так, как положено - гарантирую, ибо сам раньше занимался теорией компиляции и писал свои и интерпретаторы и компиляторы :)

А писать интерпретатор самому, имхо, - занятие бессмысленное, ибо на поддержку собственного движка будет уходить все полезное время.
Последний раз редактировалось Alchemist 07 май 2007, 03:53, всего редактировалось 1 раз.

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Сообщение Alchemist » 07 май 2007, 03:51

Для звука рекомендую библиотеку FMOD, имхо самая лучшая библиотека для вывода звука, какую можно добыть забесплатно. Она не фри и не опен-сурс, товарищи очень лихо зарабатывают на ее использовании в огроменном количестве коммерческих игр, однако на сайте есть специальный вариант для некоммерческого использования. Понимает большое количество форматов (разумеется и WAV, и MP3, и OGG). Преспокойно все это микширует, поддерживает 3D вывод звука с эффектами для 3D-игр. Позволяет использовать различные способы вывода звука (список различен для разных платформ, скажем под Win - их всего два, под Linux - добрых 4 или 5). Количество возможностей поражает, притом кроссплатформенна и проста в использовании. Есть заголовочные файлы для Delphi, разумеется как и под многие другие языки. С проектом нужно будет поставлять только небольшую "fmod.dll".

Сайт: http://fmod.org/

Для графики и многих других задач, связанных с разработкой игр, могу порекомендовать библиотеку SDL. Библиотека фри и опен-сурс, есть огромное количество аддонов, заголовочные файлы для Delphi и многие другие языки. Проста в использовании, позволяет разрабатывать кроссплатформенные приложения. Можно на свое усмотрение использовать различные способы граф. вывода на нижнем уровне (для Win: ASCII, GDI, DirectX, OpenGL; для Linux: штук пять только обычного графического вывода, консоль также поддерживается).
С проектом понадобится поставлять файлы: "sdl.dll", "sdl_image.dll" (опционально - для поддержки иных форматов кроме bmp), "sdl_net.dll" (для поддержки сети) и др. (их очень много). Почему рекомендую: библиотека позволяет при разработке абстрагироваться от особенностей конкретных граф. движков, являясь совершенно необременительной надстройкой над ними. Разработана главным программистом компании Loki Software, которая довольно известна своей политикой покупки популярных win-игр, с последующим их портированием под Linux при помощи библиотеки SDL.

Сайт: http://libsdl.org/
Заголовочные файлы для Delphi: http://sourceforge.net/projects/jedi-sdl

Убежден, имхо, что использование вот таких библиотек помогло бы многим избежать момента, когда гибнет или затухает большое количество перспективных проектов - момента, когда разработчик решает начать разработку с движка. Это неверный ход. Вся мировая практика показывает, что нельзя никакой проект начинать с нижнего уровня, - только с концептуальной части. Иначе до нее либо не доберешься, либо придется по многу раз менять уже сделанный движок.

Аватара пользователя
Sanja
Администратор
Сообщения: 791
Зарегистрирован: 24 ноя 2006, 12:25
Откуда: Новосибирск
Контактная информация:

Сообщение Sanja » 07 май 2007, 06:11

Ыть блин, Алхимик быстрее меня написал про PascalScript. :) Я тоже пользовался им пару лет назад. Отличнейшая вещь.

Но если честно не вижу особенной ценности использования скриптов в рогалике. Хоть убей не вижу.

darhark
Сообщения: 57
Зарегистрирован: 02 май 2007, 23:18

Сообщение darhark » 07 май 2007, 06:46

Sanja писал(а):Но если честно не вижу особенной ценности использования скриптов в рогалике. Хоть убей не вижу.
Ну, чтобы из-за каждой мелочи не плодить лишних строк в исходнике. Квесты делать (!). Иметь возможность новый шмот и монстрятник подключать без перекомпиляции. Для всяких мелочей, не касающихся ядра игры, скрипты - штука незаменимая. Они проще в отладке. Они практически не плодят неясного происхождения ошибок (по крайней мере, питон не плодит), как это периодически вытворяет C. Они вообще проще. Чистый рогалик вроде NetHack, конечно, может обойтись и без скриптов, но ведь не чистым рогаликом же единым. В конце концов, на дворе 21-й век, скорость интерпретации уже не является основным барьером... а возможностей использования скриптов лучше не перечислять.

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 07 май 2007, 07:24

Квесты делать (!).
А без скриптов, их, значит, никак не сделаешь?
Иметь возможность новый шмот и монстрятник подключать без перекомпиляции.
И нафига это? Или, типа, рогалик без возможности модифицирования извне - просто не ТРУЪ?
Айв кнгенгах Йог-Сотот

darhark
Сообщения: 57
Зарегистрирован: 02 май 2007, 23:18

Сообщение darhark » 07 май 2007, 08:20

Maelstrom писал(а):
А без скриптов, их, значит, никак не сделаешь?
Нет, ну почему же, можно, конечно. В принципе, экзешник все равно не вырастет выше определенного максимума, слишком много памяти тоже сожрать не должен - рогалик, как никак. Только, ИМХО, такая штука, как квест, не стоит того, чтобы ее на чистом Си писать. В конце концов:

def TorgnarDiag(self, actor):
actor.ask("че надо?"):
if answer=="шоб ты сдох!":
actor.Attack(Player)
Flags.Add("Torgnar_angry")
else: actor.Say("отвали тада")

Torgnar = Characters.Add(dwarf, blacksmith, "Torgnar", RandomStats, Town("Dwarven").Position.Random)
Torgnar.AddDialogue(TorgnarDiag)
Torgnar.SetTrigger(OnDie, "self.Say('ААРГХ!')")

ИМХО, такая реализация тупо проще, чем то, что пришлось бы сделать на C, плюс исходник не разрастается.
И нафига это? Или, типа, рогалик без возможности модифицирования извне - просто не ТРУЪ?
Хм, нет. Не тру - это необходимость все пересобирать каждый раз, когда надо "+0 wooden staff of nothing" добавить.

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

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 07 май 2007, 08:42

def TorgnarDiag(self, actor):
actor.ask("че надо?"):
if answer=="шоб ты сдох!":
actor.Attack(Player)
Flags.Add("Torgnar_angry")
else: actor.Say("отвали тада")

Torgnar = Characters.Add(dwarf, blacksmith, "Torgnar", RandomStats, Town("Dwarven").Position.Random)
Torgnar.AddDialogue(TorgnarDiag)
Torgnar.SetTrigger(OnDie, "self.Say('ААРГХ!')")
И? У меня всё практически также, только без скриптов, всё в хардкоде. Хотя хз, у меня о Си весьма поверхностные представления.
это необходимость все пересобирать каждый раз, когда надо "+0 wooden staff of nothing" добавить.
Тоже не вижу ничего сложного в необходимости лишний раз скомпилить.
Айв кнгенгах Йог-Сотот

Аватара пользователя
Sanja
Администратор
Сообщения: 791
Зарегистрирован: 24 ноя 2006, 12:25
Откуда: Новосибирск
Контактная информация:

Сообщение Sanja » 07 май 2007, 09:52

Мдя. Вообще, конечно, это личное дело каждого.
На том и порешим, хорошо? :wink:

Я тут исходники порта Ангбанда на Common Lisp увидел, так это для неподготвленной психики жесть конечно. Похоже Лисп работает совсем по другому принципу, чем обычные языки. Логика другая. Может на самом деле на нём удобнее писать, но что-то уж очень печально всё это выглядит.

Кстати, на Питоне (чистом) пока только один рогалик встретил. "I, Monster" называется.

Блин, на чём только не пишут...

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 07 май 2007, 11:05

Sanja писал(а):Я тут исходники порта Ангбанда на Common Lisp увидел, так это для неподготовленной психики жесть конечно. Похоже Лисп работает совсем по другому принципу, чем обычные языки. Логика другая. Может на самом деле на нём удобнее писать, но что-то уж очень печально всё это выглядит.
Естественно, он выглядит печально: он не алгоритмический.
Dump the screen? [y/n]

Аватара пользователя
reincarnation
Сообщения: 33
Зарегистрирован: 25 ноя 2006, 22:24
Откуда: Москва

Сообщение reincarnation » 07 май 2007, 15:11

Максим Кич писал(а): Естественно, он выглядит печально: он не алгоритмический.
Он не "не алгоритмический", он не императивный.

Bioworm
Сообщения: 89
Зарегистрирован: 01 фев 2007, 03:33

Сообщение Bioworm » 01 июн 2007, 20:22

Sanja писал(а):Я тут исходники порта Ангбанда на Common Lisp
А вот ещё: http://common-lisp.net/project/lifp/sewers.htm

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя