Язык программирования для рогалика.
Модераторы: Sanja, Максим Кич
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
моё "ня" по этому поводу
раз уж вопрос кто как тентаклями гвозди вбивает - расскажу о себе^^ Мучаюсь, пишу интерпретатор для собственного языка^^ Правда это будет только Scripting Engine, а так на Delphi пишу... уже закончила графический движок и звуковой. и механику.
Оффтоп: были б спрайты - выдала бы демку. а пока не нарисую еще 200 спрайтиков - не покажу...
Оффтоп: были б спрайты - выдала бы демку. а пока не нарисую еще 200 спрайтиков - не покажу...
- Alchemist
- Мастер
- Сообщения: 203
- Зарегистрирован: 13 дек 2006, 09:15
- Откуда: Нижний Тагил, Иваново
- Контактная информация:
Re: моё "ня" по этому поводу
Не мучайся, есть фриварный с открытыми исходниками интерпретатор Pascal под Delphi - "Innerfuse Pascal Script™ 3.0":Харука-тян писал(а):раз уж вопрос кто как тентаклями гвозди вбивает - расскажу о себе^^ Мучаюсь, пишу интерпретатор для собственного языка^^ Правда это будет только Scripting Engine, а так на Delphi пишу... уже закончила графический движок и звуковой. и механику.
Оффтоп: были б спрайты - выдала бы демку. а пока не нарисую еще 200 спрайтиков - не покажу...
Ссылка: http://remobjects.com/page.asp?id={9A30 ... BBE7E302E6}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.
Очень качественно сделанный продукт, интерпретатор шикарный, поддерживает компиляцию в байт-код, что позволяет делать фишки в духе TES3 Morrowind: при редактировании в БД скажем написал скрипт, тут-же откомпилировал его и сохранил в БД - и текстом и кодом, а при загрузке игры из БД поднимаешь только компилированный байт-код и по необходимости выполняешь его уже махом без лишней работы по парсингу текста. Рекомендую ибо фри и опен-сурс, и еще профессиональный - сделан так, как положено - гарантирую, ибо сам раньше занимался теорией компиляции и писал свои и интерпретаторы и компиляторы
А писать интерпретатор самому, имхо, - занятие бессмысленное, ибо на поддержку собственного движка будет уходить все полезное время.
Последний раз редактировалось Alchemist 07 май 2007, 03:53, всего редактировалось 1 раз.
- Alchemist
- Мастер
- Сообщения: 203
- Зарегистрирован: 13 дек 2006, 09:15
- Откуда: Нижний Тагил, Иваново
- Контактная информация:
Для звука рекомендую библиотеку 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
Убежден, имхо, что использование вот таких библиотек помогло бы многим избежать момента, когда гибнет или затухает большое количество перспективных проектов - момента, когда разработчик решает начать разработку с движка. Это неверный ход. Вся мировая практика показывает, что нельзя никакой проект начинать с нижнего уровня, - только с концептуальной части. Иначе до нее либо не доберешься, либо придется по многу раз менять уже сделанный движок.
Сайт: 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
Убежден, имхо, что использование вот таких библиотек помогло бы многим избежать момента, когда гибнет или затухает большое количество перспективных проектов - момента, когда разработчик решает начать разработку с движка. Это неверный ход. Вся мировая практика показывает, что нельзя никакой проект начинать с нижнего уровня, - только с концептуальной части. Иначе до нее либо не доберешься, либо придется по многу раз менять уже сделанный движок.
Ну, чтобы из-за каждой мелочи не плодить лишних строк в исходнике. Квесты делать (!). Иметь возможность новый шмот и монстрятник подключать без перекомпиляции. Для всяких мелочей, не касающихся ядра игры, скрипты - штука незаменимая. Они проще в отладке. Они практически не плодят неясного происхождения ошибок (по крайней мере, питон не плодит), как это периодически вытворяет C. Они вообще проще. Чистый рогалик вроде NetHack, конечно, может обойтись и без скриптов, но ведь не чистым рогаликом же единым. В конце концов, на дворе 21-й век, скорость интерпретации уже не является основным барьером... а возможностей использования скриптов лучше не перечислять.Sanja писал(а):Но если честно не вижу особенной ценности использования скриптов в рогалике. Хоть убей не вижу.
Хм, нет. Не тру - это необходимость все пересобирать каждый раз, когда надо "+0 wooden staff of nothing" добавить.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, плюс исходник не разрастается.
И нафига это? Или, типа, рогалик без возможности модифицирования извне - просто не ТРУЪ?
Мдя. Вообще, конечно, это личное дело каждого. Мне лично удобнее скрипты использовать.
- Maelstrom
- Мастер
- Сообщения: 2062
- Зарегистрирован: 26 ноя 2006, 14:19
- Откуда: г. Усть-Кирдык
- Контактная информация:
И? У меня всё практически также, только без скриптов, всё в хардкоде. Хотя хз, у меня о Си весьма поверхностные представления.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
- Откуда: Новосибирск
- Контактная информация:
На том и порешим, хорошо?Мдя. Вообще, конечно, это личное дело каждого.
Я тут исходники порта Ангбанда на Common Lisp увидел, так это для неподготвленной психики жесть конечно. Похоже Лисп работает совсем по другому принципу, чем обычные языки. Логика другая. Может на самом деле на нём удобнее писать, но что-то уж очень печально всё это выглядит.
Кстати, на Питоне (чистом) пока только один рогалик встретил. "I, Monster" называется.
Блин, на чём только не пишут...
- Максим Кич
- Администратор
- Сообщения: 1642
- Зарегистрирован: 03 дек 2006, 20:17
- Откуда: Витебск, Беларусь
- Контактная информация:
Естественно, он выглядит печально: он не алгоритмический.Sanja писал(а):Я тут исходники порта Ангбанда на Common Lisp увидел, так это для неподготовленной психики жесть конечно. Похоже Лисп работает совсем по другому принципу, чем обычные языки. Логика другая. Может на самом деле на нём удобнее писать, но что-то уж очень печально всё это выглядит.
Dump the screen? [y/n]
- reincarnation
- Сообщения: 33
- Зарегистрирован: 25 ноя 2006, 22:24
- Откуда: Москва
А вот ещё: http://common-lisp.net/project/lifp/sewers.htmSanja писал(а):Я тут исходники порта Ангбанда на Common Lisp
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 33 гостя