LINUX.ORG.RU

Вышла первая публичная версия INSTEAD - интерпретатора простых текстовых приключений

 , ,


0

0

Интерпретатор STEAD (Simply Text Adventure) позволяет проигрывать игры, которые по жанру являются смесью визуальной новеллы, текстового квеста и классических квестов 90-х. Особенности STEAD игры:

  • очень простой исходный текст историй. (В качестве основы используется LUA);
  • возможность использования графического или текстового (readline) интерфейса для игры;
  • в графическом интерфейсе поддерживается музыка и графика;
  • поддержка тем для графического интерпретатора -- конкретная игра может менять вид интерфейса;
  • переносимость (изначально написана для Linux, зависит от SDL и lua).

На данный момент автором STEAD написана одна игра (о леснике хакере-дауншифтере и его войне со злом:), которая входит в состав архива с исходным кодом. Игра содержит около 70 сцен, графику и oldschool треки.

>>> Исходный код и скриншоты

Ответ на: комментарий от question4

При попытке установить в /usr вместо /usr/local получаю такую же ошибку, как vdm: не может найти игры в /usr/share/stead/games/, хотя они там есть и с разрешением на чтение для всех.

question4 ★★★★★
()
Ответ на: комментарий от question4

> При попытке установить в /usr вместо /usr/local получаю такую же ошибку, как vdm: не может найти игры в /usr/share/stead/games/, хотя они там есть и с разрешением на чтение для всех.

у меня такое было, я просто зашел в /usr/share/stead/games/cat/ и выполнил sdl-instead ./main.lua после этого он подхватил остальные

BaBL ★★★★★
()
Ответ на: комментарий от question4

Похоже. bug. Пока не воспроизвел, можно посмотреть что происходит? strace -f -e file sdl-instead?

gloomy ★★
() автор топика
Ответ на: комментарий от BaBL

> у меня такое было, я просто зашел в /usr/share/stead/games/cat/ и выполнил sdl-instead ./main.lua после этого он подхватил остальные

Странно. В коде вообще не анализируется командная строка. Явный баг -- но я не могу его воспроизвести. Уже и valgrind прогнал... Очень прошу воспроизвести ошибку и дать вывод strace.

gloomy ★★
() автор топика
Ответ на: комментарий от gloomy

у меня в обычном инстиде это проявляется



$ strace -f -e file instead /usr/local/share/stead/games/cat/main.lua
execve("/usr/local/bin/instead", ["instead", "/usr/local/share/stead/games/cat"...], [/* 38 vars */]) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/liblua5.1.so.0", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libreadline.so.5", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libm.so.6", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libdl.so.2", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libncurses.so.5", O_RDONLY) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
open("/usr/local/share/stead/stead.lua", O_RDONLY) = 3
open("/usr/local/share/stead/games/cat/main.lua", O_RDONLY) = 3
open("ep1.lua", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
open("/usr/share/locale/ru_RU.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru_RU.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru_RU/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru/LC_MESSAGES/libc.mo", O_RDONLY) = 3
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
open("/usr/lib/gconv/KOI8-R.so", O_RDONLY) = 3
Error:cannot open ep1.lua: Нет такого файла или каталога

BaBL ★★★★★
()
Ответ на: комментарий от BaBL

Это не то. Консольная версия просто пока не умеет сканить игр -- ее нужно запускать из того же каталога, что и игра...

gloomy ★★
() автор топика
Ответ на: комментарий от question4

Спасибо. Судя по strace игра вообще не делает прверку. Я не могу этого понять -- в коде это есть. Последняя просьба. Можно глянуть в функцию games_lookup.

d = opendir(GAMES_PATH); if (!d) return -1; /* и посмотреть что делается тут ??? Поставить fprintf(stderr, "aaa"), наприамер*/ while ((de = readdir(d))) { /* этого НЕТ в strace!!! */ if (de->d_type != DT_DIR) continue; if (!is_game(de->d_name)) continue; n ++; }

И попробовать вставить после return -1 rewinddirr(d)???

Или сделать strace но уже без -e file

gloomy ★★
() автор топика
Ответ на: комментарий от question4

Офигеть. Мне тут помогли -- выяснилось, что дело, что reiserfs не поддерживает d_type в readdir. Я в шоке. В новой версии 0.7.4 будет пофикшено.

gloomy ★★
() автор топика
Ответ на: комментарий от question4

0.7.4 работает? Возможно, еще особенности glibc.

gloomy ★★
() автор топика
Ответ на: комментарий от question4

Вам спасибо за тестирование. :)

gloomy ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.