The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Microsoft открыл код игр Zork I, II и III под лицензией MIT"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Microsoft открыл код игр Zork I, II и III под лицензией MIT"  +/
Сообщение от opennews (??), 20-Ноя-25, 23:08 
Компания Microsoft объявила об открытии под лицензией MIT исходного кода  текстовых квестов серии Zork, выпущенных в 1978 (Zork I), 1981 (Zork II) и 1983 (Zork III) годах. В 2019 году код данных игр уже был опубликован проектом Internet Archive под изначальной лицензией, которая не являлась открытой. Сейчас Microsoft  перевёл код на лицензию MIT. Местонахождение кода не изменилось и он как раньше доступен в репозиториях Internet Archive (Zork I, Zork II, Zork III), но под новой лицензией...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64293

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 20-Ноя-25, 23:08   +1 +/
почему не на форте? >:(
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2

2. Сообщение от кек (?), 20-Ноя-25, 23:13   +1 +/
опенсорснутый, не видишь чтоли?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

3. Сообщение от Аноним (3), 20-Ноя-25, 23:13   –3 +/
Афигеть! Вот это новость. Майкрософт лучший друг опенсорса
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4

4. Сообщение от Аноним (4), 20-Ноя-25, 23:23   –3 +/
https://opensource.microsoft.com
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

5. Сообщение от Bottle (?), 20-Ноя-25, 23:39   +/
Геймдев на лиспе суровая штука.
Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от Аноним (6), 20-Ноя-25, 23:56   +/
Этот ZIL совсем нечитаемый как по мне, вот Inform 7 другое дело
Ответить | Правка | Наверх | Cообщить модератору

7. Сообщение от Аноним (7), 21-Ноя-25, 00:05   +3 +/
Ребята продукт жизнидеятельности мамонта откопали. Щедрость филантропа Билла просто зашкаливает.
Ответить | Правка | Наверх | Cообщить модератору

8. Сообщение от Джон Титор (ok), 21-Ноя-25, 02:34    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору

9. Сообщение от Аноним (9), 21-Ноя-25, 04:17   +1 +/
Абсолютно ненавижу парсерные игры, никогда не угадаешь как именно надо команду ввести, чтобы игра её распознала. К ним бы большие языковые модели прикрутить, норм тогда было бы.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10, #11

10. Сообщение от Аноним (9), 21-Ноя-25, 04:25   +/
https://github.com/UlfarErl/lampgpt
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #12

11. Сообщение от Анони (?), 21-Ноя-25, 04:38   +/
Они распознают слова по 3-4 первым буквам и ожидают порядок слов глагол-существительное. Ничего сложного нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #13

12. Сообщение от Аноним (9), 21-Ноя-25, 05:03   +/
## Initialization

1. The script starts by importing various Python modules, including `argparse`, `toml`, `subprocess`, and `curses`, and various LLM binding libraries.
2. It defines a `GlobalState` class, which stores various global variables and settings, such as the game configuration, LLM configuration, and debug logging settings.
3. The script parses command-line arguments using `argparse`, which includes options for specifying the configuration file, transcript output file, and other settings.
4. It loads the configuration file (in TOML format) and sets up the game and LLM configurations using the `toml` module.
5. It creates an instance of the `GlobalState` class and sets up the global variables and settings.

## Game Loop

1. The script launches a ZIL interpreter (using the `bocfel` command) and sets up a subprocess to interact with it using the `subprocess` module.
2. It sends initialization commands to the game and ignores the output.
3. The script enters a loop where it:
    * Reads user input (either from the terminal or from a splitscreen interface) using the `sys.stdin.readline()` function.
    * Sends the input to the ZIL interpreter using the `process.stdin.write()` function.
    * Gets the response from the ZIL interpreter using the `non_blocking_read()` function, which reads from the subprocess's stdout pipe.
    * Checks if the response indicates a parser error; if so, it attempts to fix the error by trying alternative commands using the `try_to_fix_parser_error()` function.
    * If the response is valid, it uses the LLM to rewrite the response in a more descriptive and engaging style using the `rewrite_response()` function.
    * Outputs the rewritten response to the user, along with any relevant debug information, using the `show_output_to_user_etc()` function.

## LLM Interaction

1. The script uses the `get_llm_response()` function to interact with the LLM, which takes a prompt and returns a response.
2. The prompt is constructed by combining various elements, such as the game's current state, the user's input, and any relevant context, using the `add_to_llm_prompt()` function.
3. The script uses the LLM's response to generate a rewritten version of the game's response using the `process_rewritten_response_of_room()` function.
4. The rewritten response is then output to the user, along with any relevant debug information.

## Splitscreen Mode

1. If the `--splitscreen` option is specified, the script uses the `curses` library to create a splitscreen interface, where the game's output is displayed on one side and the user's input is displayed on the other.
2. The script uses the `get_command()` method to read user input from the splitscreen interface.

## Debugging and Logging

1. The script uses various logging mechanisms, including debug logs, transcripts, and error messages, to provide information about its operation.
2. It uses environment variables and command-line options to control the level of debugging and logging.

## Functions

Here's a brief explanation of some of the key functions used in the script:

* `add_to_llm_prompt()`: Adds a prompt to the LLM's input.
* `get_llm_response()`: Gets a response from the LLM.
* `rewrite_response()`: Rewrites the game's response using the LLM.
* `try_to_fix_parser_error()`: Tries to fix parser errors by attempting alternative commands.
* `show_output_to_user_etc()`: Outputs the rewritten response to the user, along with any relevant debug information.
* `non_blocking_read()`: Reads from the subprocess's stdout pipe without blocking.
* `configure_non_blocking_reads()`: Configures the subprocess's stdout pipe to be non-blocking.

## LLM Configuration

The script uses a TOML configuration file to specify the LLM configuration, which includes settings such as the LLM model, API key, and temperature. The script uses this configuration to interact with the LLM and generate rewritten responses.

## Game Configuration

The script uses a TOML configuration file to specify the game configuration, which includes settings such as the game path, syntax, and background information. The script uses this configuration to interact with the ZIL interpreter and generate rewritten responses.

Говно в общем.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

13. Сообщение от Аноним (13), 21-Ноя-25, 05:05   +/
Откуда ты узнаешь, какой глагол игра ожидает, если она не даёт список глаголов, доступных в данной ситуации для предметов (и не все глаголы со всеми предметами совместимы, а в большинстве случаев глаголы идут между двумя предметами и порядкозависимы)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #14, #17

14. Сообщение от Аноним (13), 21-Ноя-25, 05:18   +1 +/
А сами предметы ... если бич point and click - это пиксельхантинг, то тут часто незначительная деталь, о которой можно только догадаться, по наличию одного незначительного слова в тексте. Понимаешь как-бы, в реальной жизни проблемы решаются многими способами, а в игре - вот конкретно одним заскриптованным, и ты этот заскриптованный способ должен угадать. При этом иногда этот заскриптованный способ скрыт, и ты просто вслепую перебираешь все деревья, которые в жизни шли бы к цели, в надежде на то, что там окажется заскриптованное. Это даже со словарём доступных глаголов и объектов трудоёмко, а в парсерах - это вообще без предоставленного игроку словаря часто (есть игры с автодополнением, там в словарь можно подзаглянуть, написав префикс, но это на платформе inSTEAD (Пётр, к сожалению, оказался перепрошитым, не ожидал от него, раньше вроде очень позитивно взаимодействовали, но после определённой даты у него словно крышу снесло, очень жалко) + метапарсер (категорически рекомендую "Переход" и "Лидия"). А часто логика в квестах бывает извращённая, и здравый смысл вообще не поможет, только доскональное знание американского культурного кода и чутьё на игру слов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #16

16. Сообщение от Анони (?), 21-Ноя-25, 05:29   +/
Да не так уж много глаголов помещалось в 64 кб. Или вовсе в 8.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

17. Сообщение от Аноним (17), 21-Ноя-25, 05:56   +/
В этом и была прелесть тех игр, что нужно было с ней найти общий язык. Но потом для масс был придуман Maniac Mansion… и прелесть потерялась.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #18

18. Сообщение от Аноним (18), 21-Ноя-25, 07:12   +/
maniac mansion ужасно сложный, без прохождения не проходится. Кирандия в принципе тоже, но кирандия на порядки более качественная игра (вторая часть - вообще шедевр, третья - просто эксплуатация фран-шизы).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #19

19. Сообщение от Аноним (17), 21-Ноя-25, 07:33   +/
Я не про сложность, а про то, что все действия на виду. Кстати, большинство текстовых адвенчюр были вполне логичными, это вот после идиотизм пошёл.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру