Как сделать переход из одной комнаты в две другие? hopkins1988 to All

Как сделать?
room{
title='первая комната'
name='первая комната'
way={path{'вторая комната','room2'}}
way={path{третья комната,'room3}}
}

SLfarSJJoEADe6irvfkc

Re: TGE 5.2.10 и Instead hugeping to Darkon

Тут есть инициатива по развитию модуля TGE. Может быть стоит скооперироваться, написать там issue для начала?

https://github.com/KOLANICH/instead-game-rangers

iaee67O9tpVIzCcdJJAx

Re: TGE 5.2.10 и Instead Darkon to Darkon

Инфа есть от достопочтенного Василия "roginvs" Рогина в его ветке GitHub в ридере от его плеера игр формата .qmm - https://github.com/roginvs/space-rangers-quest/blob/master/src/lib/qmreader.ts
Разработчик дал добро выяснять из его кода о работе формата.
Но там всё на JavaScript'е. Честно сказать ничего не понял, но продолжаю пытаться.

pFPHU4twgb2BcYFVdsED

Re: TGE 5.2.10 и Instead hugeping to Darkon

Darkon> Приветствую. Использую связку TGE 4.3 и INSTEAD для создания квестов (не только по вселенной КР).

Привет! А есть ли описание нового формата? Или, хотя бы, отличия от старого?

f7oM80mMkFfAAA2OzoYp

TGE 5.2.10 и Instead Darkon to All

Приветствую. Использую связку TGE 4.3 и INSTEAD для создания квестов (не только по вселенной КР). Используя модуль для проигрывания и конвертирования игр из qm в lua, за авторством Петра Косых.
Для меня это идеальный вариант уменьшить кол-во программирования и сосредоточится на творчестве.

Несколько лет назад вышла Space Rangers Quest, игрушка по вселенной Космических Рейнджеров, в которой геймплей почти на 100% состоит из текстовых Квестов. Был обновлен и редактор TGE до версии 5.2.10. Добавились новые функции, можно указывать какие илюстрации будут отображаться во время игры на каждой отдельной локации, а так же звуковые эффекты и музыка, ограничения проходимости локаций и т.д. Создан расширенный формат ".qmm".

У кого то может есть идеи, как адаптировать новый формат квестов из редактора TGE 5.2.10 с INSTEAD. Обновить имеющийся конвертер, расширив функции и т.д.

Ссылка на TGE 5.2.10 - https://disk.yandex.ru/d/XE3vz18kpVjP6w (так же есть на форуме snk-games.net)

VK6IXAn6LgOv2Ztn91ZH

Re: Установка INSTEAD-EM и INSTEAD-JS на vps lnp3 to hugeping

Может быть, и не буду переделывать. Пока это под вопросом. Ваше мнение учту, спасибо большое!

ISwIxJPPCgRPR25xfHAB

Re: Установка INSTEAD-EM и INSTEAD-JS на vps hugeping to lnp3

lnp3> Сначала решил делать стандартно, а теперь хочется переделать на парсер. Мне кажется, так интереснее, но времени переделка может отнять много. Думаю.

Я бы не стал переделывать, если часть кода уже написана.

На самом деле, парсер ещё сузит аудиторию.

P.S. Графика -- это круто!

VCNmMY4ZOeVPJUWZ5Fgh

Re: Установка INSTEAD-EM и INSTEAD-JS на vps lnp3 to boscholeg

Свою игру доделываю. Сценарий есть, графика отличная (художница старалась), тексты написаны. Детектив с кучей головоломок. Напрасно, наверное, такой сложный проект решил выпускать первым, но очень хочется :)
Правда, много графики, поэтому хочу сначала попробовать на EM, а потом, если всё будет слишком долго грузиться, посмотрю на JS.
Сначала решил делать стандартно, а теперь хочется переделать на парсер. Мне кажется, так интереснее, но времени переделка может отнять много. Думаю.

uwzftkETQ9HkULAZE0FA

Re: Установка INSTEAD-EM и INSTEAD-JS на vps boscholeg to lnp3

Если не секрет - расскажите какой проект планируете создать.
Будете свою игру писать или сторонние использовать?
P.S. Edited: 2020-12-21 07:35:04

tPVZEBiobdBMZp6HrjOO

Re: Установка INSTEAD-EM и INSTEAD-JS на vps lnp3 to hugeping

Спасибо большое! Это моя вина - не заметил среди прочих файлов instead-em-3.3.2.zip
Буду пробовать, там всё понятно написано.

IHZo22kllu4CLwpktVmU

Re: Установка INSTEAD-EM и INSTEAD-JS на vps hugeping to lnp3

В дистрибутиве INSTEAD-EM есть файл README. Прямо внутри zip архива.
Если что-то непонятно в этом README, можно спросить здесь, но уже конкретней.

По instead-js не смогу проконсультировать. Проще всего спросить на телеграм каналах @insteadtalk или @insteadchat у автора (@technix),

ZdyL1qVXld2puvj2lToA

Установка INSTEAD-EM и INSTEAD-JS на vps lnp3 to All

Здравствуйте. Помогите, пожалуйста, советом. Как мне установить на своём vps INSTEAD-EM и INSTEAD-JS? Мне нужно запустить мою игру на своём сайте, но инструкций для этого я не нашёл.

Если лучше задать этот вопрос на instead-games.ru, то прошу помочь с Invitation Code.

Спасибо!

HRA1WJywtbsdUAwyuBoL

Re: Мысли про возможность подружить Twine и INSTEAD be_nt_all to Peter

> Еще есть такая тема, генерить код для мета-парсера.

Есть :). Но пока point-and-click. Прикидываю, какие кубики надо определить для Блокли, чтобы делать комнаты и предметы по твоим «прописям» в документации.

jeVYxcqkPzT1hPtZ4BbQ

Re: Мысли про возможность подружить Twine и INSTEAD techniX to be_nt_all

Когда-то на instead-js я в качестве proof-of-concept делал вот такую штуку:
https://technix.github.io/instead-playground/
Т.е. пишешь код в редакторе, а сбоку он сразу же в instead-js выполняется. Впрочем, дальше этого эксперимента дело не пошло.

Так что если захочешь развивать instead-js - буду только рад :)

iWUYtMVmHEqSzi1sbR3X

Re: Мысли про возможность подружить Twine и INSTEAD Peter to be_nt_all

> В общем буду иметь эту штуку в виду но начну с JS и Blockly.

Еще есть такая тема, генерить код для мета-парсера. В принципе, метапарсер поддерживается instead-js. В теории, парсерные игры могут взлететь в режиме чат-ботов, которые я недавно запустил. Это просто на уровне идей. :)

FvQ6gGtiSAu9srRQeTES

Re: Мысли про возможность подружить Twine и INSTEAD be_nt_all to be_nt_all

> Ну там в перспективе светит более легковесная альтернатива Instead-em.

Похоже Technix пару лет назад уже написал. https://github.com/instead-hub/instead-js Там, конечно, lua.vm.js — Fengari тогда ещё не было.

Кстати автор и мейнтейнер lua.vm.js, как раз и стал вторым разработчиком Fengari, объявив свой проект устаревшим. Так что заменить lua.vm.js на Fengari там сам Бог велел (я в теме Техникса уже отписался на эту тему).

В общем буду иметь эту штуку в виду но начну с JS и Blockly.

63B3AmaSAtQfhTg21HfZ

Re: Мысли про возможность подружить Twine и INSTEAD be_nt_all to be_nt_all

http://blockly.ru/blockly-html/index.html — вот так с помощью Блокли можно верстать на html, пример программирования собственно логики, если кто никогда скретча/блокли не видел, ну, хотя-бы на заглавной оф. сайта https://developers.google.com/blockly/

Так что внутри текста планирую оставить только что-то вроде

====
Перед хижиной стоит мой старенький {пикап} Toyota.
====


d9jhhU0hJbA60VEXz6Sa

Re: Мысли про возможность подружить Twine и INSTEAD be_nt_all to Kerbal

А ещё есть представление программы в виде паззла. Scratch/App Inventor/Blockly. Тоже (сейчас) всё на JS/HTML5 (хотя первый скрэтч был на смолтоке). И кстати прикручивание Blockly для кодирования того, что внутри блока будет альтернативой прикручиванию Lua in Browser в виде φεγγάρι. Блокли-диаграммы можно будет транслировать и в JS, и в Lua. И Блокли, к разработке которого приложили руку люди из MIT и Google выглядит куда основательней и надёжней, чем разработка двух программистов с версией 0.1.4.

/me in thinking…

С Blockly может получится продукт с действительно минимальным уровнем вхождения. Для имеющих какой-никакой опыт программирования — чересчур минимальным, но «Вотъ тебѣ Богъ, а вотъ и порогъ», не в смысле, что совсем уходи, а в смысле, что Instead ждёт новых разработчиков и Twinestead я задумал именно как порог туда.

Второй путь… Ну там в перспективе светит более легковесная альтернатива Instead-em. Хотя в любом случае — не на 100% c sdl-instead совместимая (хотя стремится к совместимости с большинством игр можно)… Тоже, конечно, цель интересная, но от первоначальной цели (понизить порог вхождения, на базе имеющегося twine-сообщества попытаться сформировать какое-никакое англоязычное сообщество instead-писателей) — несколько в стороне.

Так что пока выберу Blockly, а Fengari-Lua отложу на когда-нибудь после (хотя штука очень интересная).

ocHNY980MijfKMH5i6Nt

Re: Мысли про возможность подружить Twine и INSTEAD Kerbal to be_nt_all

Такая вот забавная штука, рисующая блоки и стрелочки: https://habr.com/ru/post/333750/

cKHeF6FXMUkyRBeKUXyX

Re: Мысли про возможность подружить Twine и INSTEAD Peter to be_nt_all

> Я думаю, такая штука, если получится, живя рядом с Instead, в довольно «раскрученном» сообществе Twine, да и просто в качестве визуального редактора инстед-игр для непрограммистов, на популяризацию Instead сыграть вполне может. А вы как думаете, стоит в эту сторону копать?

Стоит или не стоит - тут решать тебе. Про себя могу сказать так. Раньше я часто думал обо всем этом: о конструкторе, о специализированном языке (похожем на естественный). И все это можно сделать, это абсолютно точно. Это снизит порог вхождения. Само по себе это имеет и положительные и отрицательные стороны.

Но времени всегда мало, тратя его на инструмент (который лично мне не очень удобен, мне проще писать код) -- я забираю его у совего творчества. И это обидно. Поэтому на данном этапе я сосредоточился на том, чтоб писать истории. А проект - открыт! Если кто то сделает что-то новое - я буду только рад. :)

J1VOjv1IVYZMRvRzlzeP

Мысли про возможность подружить Twine и INSTEAD be_nt_all to All

Сильно подробно писать, что такое Twine не буду (лучше таки допишу техчасть в https://ru.wikipedia.org/wiki/Twine — пока отложил, стараяь следовать принципу Википедии «лучше сослаться на вторичный источник (книга, статья в журнале), чем на первичный (документация)» и подбор этих самых вторичных источников — отдельная песня), но в общем — движок книг-игр. На html и JS. Изначально — на основе TiddlyWiki (кто не в курсе что это, легко нагуглить на руссском). У нас больше известен клон AXMA Story Maker. Закрытый и проприетарный — я так понимаю, чтобы не нарушать GPL авторы сего чуда повторили функционал Twine 1, используя те же «запчасти», вроде TiddlyWiki, лицензированные под BSD/MIT. Про аксму больше не буду, так как проприетарный клон свободного софта — «это некрасиво и невкусно». И да, основное преимущество твайна/аксмы — представление игры в наглядном виде — связанные стрелками переходами прямоугольники-комнаты.

Помню я был какой-то похожий редактор, генерящий (в том числе) код для [IN]STEAD 2. Но Instead — он не только (и не столько) для книг игр. Он вообще для много чего, но изначально (как не раз писал и говорил Пётр Косых) — для механики а ля Goblins Quest. И таких игр для INSTEAD всё ещё (кажется) больше всего.

Я тут прикинул, можно ли дописать один из викидвижков Twine (а в Twine-2 их на выбор три штуки) с тем, чтобы реализовать такую механику, не сломав этот самый дизайнер с квадратиками и стрелочками. Получается, что вполне.

Хотя если это сделать на базе низкоуровневого (по отношению к JS и HTML) Twine-Snowman, или сохраняющем архитектуру TiddlyWiki Twine-SugarCube, для мира Instead это не даст ни-че-го. JavaScript на Lua не переводится, и Instead игру ты так не сгенеришь. Хотя в качестве Proof of Concept можно начать с этого.

Ну а куда после такого PoC двигаться дальше? Но ведь где три фреймворка, там можно создать и четвёртый. Берём Lua in browser (можно https://daurnimator.github.io/lua.vm.js/lua.vm.js.html — но путь без emscripten в виде https://fengari.io/ мне видится куда изящней), держим в голове STEAD 3 и сочиняем такой «язык разметки игр и историй», который бы экспортировался в исходный код игры для Instead 3 максимально естественно.

Я думаю, такая штука, если получится, живя рядом с Instead, в довольно «раскрученном» сообществе Twine, да и просто в качестве визуального редактора инстед-игр для непрограммистов, на популяризацию Instead сыграть вполне может. А вы как думаете, стоит в эту сторону копать?

6EFInqVcfH7PjAd7HJ4C

Re: INSTEAD как чат-бот Anotheroneuser to Peter

Peter> в VK:
Peter> в Telegram
Блин, похоже, надо приобщиться хоть к чему-нибудь из перечисленного, ибо ни там ни сям не участвую.. Говорю это совершенно без всякой кичливости. Даже со смущением.

# Посторонняя тема.
# Недавно поступило предложение слегка изменить юридическую специализацию (выбрать ту, где немного больше денег, но чуть меньше порядка. Впрочем, коррупции, по-прежнему немало.
# Во время рассказов о деталях, люди предлагали получить материал по WhatsAPP или Viber.
# — Как это, не пользуешься?
# — Да вот. Пытаюсь избегать распыления информации.
# — Ну ладно, тогда давай в vk.
# — VK тоже нет. Есть электронная почта или вот, — протягиваю USB-диск.
# — Слушай, так не пойдёт. Сейчас всё у всех происходит в WhatsAPP или как-то так.
# — Я понял-понял.
# Понять-то понимаю, но внутренне жутко не хочу.. У меня проблема. Мне хочется досконально изучить коммуникативные возможности Emacs (или какого-нибудь консольного приложения) и ограничиться ими.

Shy0zzV2r5ZlFNtlK3gY

INSTEAD как чат-бот Peter to All

Давно такая идея витала в воздухе. Но с появлением МЕТАПАРСЕРА3 прсото уже стало неприлично откладывать эксперимент.
Поэтому запустил два экспериментальных бота, с которыми можно поиграть в несколько демок.

Бот в VK: https://vk.com/im?sel=-18020281
И бот в Telegram: https://t.me/ifquestbot

Если есть кто живой, делитесь впечатлениями. Я лично не уверен, что боты как-то помогут популяризации, но что-то в таком формате определённо есть...

https://pbs.twimg.com/media/Dx5vEp4WoAYrJfe.jpg:large

9NrDSW2JopiFctZlJ9xn

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to lnp3

lnp3> У Шахиджаняна, который Соло на клавиатуре, было подробно и правильно об этом написано. Вот, например: https://ergosolo.ru/reviews/health/correct_seat/
Действительно, хорошо написано. Спасибо

meQBiPK9AvclZTGrlZAJ

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Anotheroneuser

> Некоторые пишут, что локти должны лежать на столе, а запястья -- упираться в стол, чтобы пальцы болтались над клавиатурой. Некоторые -- что локти должны висеть в воздухе, чтобы всё там куда-то свободно ходило.
У Шахиджаняна, который Соло на клавиатуре, было подробно и правильно об этом написано. Вот, например: https://ergosolo.ru/reviews/health/correct_seat/

K3qFXwq0KCoizwQZZyFm

31e0UTKzwYRy6WAhu1Hv

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to lnp3

lnp3> Главное - запястья правильно класть, иначе без рук можно остаться.

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

ilKXpPt7qPs3PJ9vMGmU

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Anotheroneuser

> для пальцев это, наверное, даром не проходит?
Главное - запястья правильно класть, иначе без рук можно остаться.

xnPbSwLrqn2GWCnwdMjZ

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to btimofeev

btimofeev> +1. Я в разное время пробовал соло на клавиатуре, стамину и ещё что-то. Но vse10.ru почему-то больше всех понравился.

Ну да, хорошая штука -- сейчас, как раз, тыкал её.
Попутно утонул на час в клавогонках. Действительно, можно долбить под тысячу символов в минуту. С ума сойти. Но для пальцев это, наверное, даром не проходит?

oYgYm8KDV7uaS5bAWghV

Re: Освоение BASH, The Super Dimension Fortress (SDF) btimofeev to lnp3

lnp3> > Десятипальцевый осваивал с 2017 г. по программе «Стамина».
lnp3> Я нашёл хороший онлайн-тренажёр: https://vse10.ru . Пока нравится.

+1. Я в разное время пробовал соло на клавиатуре, стамину и ещё что-то. Но vse10.ru почему-то больше всех понравился.

kkL1V7YDcCUCiuz8JK06

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to lnp3

lnp3> Я нашёл хороший онлайн-тренажёр: https://vse10.ru . Пока нравится.
Посмотрел достижения: https://vse10.ru/rating/
Офигеть -- там есть люди, которые без ошибок набирают 998 знаков в минуту.

AekDpJDjNIcaZH8F8ucz

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Andrew Lobanov

> Надо будет подумать как всё таки парсить объекты в stead3 чтобы поиск производился по nam. В старом апи то было просто.
Буду рад, если получится, но очередной подход к Emacs уже начал.

vL3tn0DqbB7yZxtugGfZ

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Anotheroneuser

> Десятипальцевый осваивал с 2017 г. по программе «Стамина».
Я нашёл хороший онлайн-тренажёр: https://vse10.ru . Пока нравится.

> Мысленно обращаешься к той части своей памяти, где по идее должно находиться местоположение английских клавиш.
Тут у меня всё проще, набираю на обоих языках много лет и помню клавиатуру прекрасно, но оторвать глаза от неё не могу. От этого появляются ошибки, хоть и скорость набора большая.

DglVtjkJUZDoA2LxQFnm

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to lnp3

>> Был поиск сцен, объектов и диалогов да возможность запустить instead с текущим файлом.
lnp3> Это не так уж и мало.

Так оно. Надо будет подумать как всё таки парсить объекты в stead3 чтобы поиск производился по nam. В старом апи то было просто.

yc4K2zKIelwcnIa78qCz

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to lnp3

lnp3> Правда, набираю текст в огромных количествах уже много лет, глядя на клавиатуру, а это для Emacs зло. Тут нужен слепой 10-пальцевый метод набора.

Короче, поделюсь опытом.
Десятипальцевый осваивал с 2017 г. по программе «Стамина».
Когда пришла запоздалая мысль, что надо пользоваться Emacs, понял, что одного русского десятипальцевого мало. Надо ещё и английский. И вот только-только начинаю. С диким скрипом )

Ещё с большим скрипом происходит непосредственно работа с клавиатурой на английской раскладке..
Переключаешь её и хочешь набрать команду. Мысленно обращаешься к той части своей памяти, где по идее должно находиться местоположение английских клавиш.
А там -- бездонная чёрная пустота, в которой крутятся снежинки (откуда-то из Пелевина)

Программу хотел порекомендовать.
Под Линукс она тоже есть, но особенности её установки мне не понравились. Поэтому, запускаю её в виртуальной винде.

B6hFw8P8bWEddsOiKx2o

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Andrew Lobanov

> Был поиск сцен, объектов и диалогов да возможность запустить instead с текущим файлом.
Это не так уж и мало.

oGzesKlj5ctYgxa7Q1Qd

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Andrew Lobanov

> Emacs меня поразил. Причём не тогда, когда я начал его использовать, а гораздо позже, когда я понял идею лиспа и лисп-машины.
Вот-вот, я плохо знаю Emacs, но уже при первом знакомстве, понял, что лисп мне нравится.

> заточен только для stead2
Жаль, но я всё равно буду терзать Emacs, чем-то привлекает, пока не понял, чем. Правда, набираю текст в огромных количествах уже много лет, глядя на клавиатуру, а это для Emacs зло. Тут нужен слепой 10-пальцевый метод набора.

> автор пакета instead-mode как раз я
Снимаю шляпу!

> есть у меня есть вот такая поделка https://github.com/spline1986/fb2-mode
Это ещё раз подчёркивает красоту и простоту лиспа.

ynlDX5iOdhK2Z20PnZri

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Andrew Lobanov

Благодарю :) сейчас попробую..
По-первой, даже и не верится, что получится что-то

5RIbVNI1hGDOdLjectYN

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to lnp3

>> Я только приступил к изучению.
lnp3> Если пакет Instead-mode найдётся, обязательно добью Emacs и выкину остальные костыли))

К сожалению, не найдётся. Да и смысла в нём сейчас не так уж много. Под stead3 надо писать моду, но пока не очень до неё да и не знаю как лучше сделать.

По сути, там не так много было возможно. Был поиск сцен, объектов и диалогов да возможность запустить instead с текущим файлом.

3zff8m1Qiun3sjySzwYC

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to lnp3

>> я Emacs MultiMedia System юзаю
lnp3> Это потрясающая вещь! Завидую, сам-то я так и не сдружился с Emacs, хотя периодически возвращаюсь к нему. Где-то видел сообщение о пакете Instead-mode для Emacs, но так и не нашёл его, а жаль - был бы повод снова переехать в эту замечательную среду.

Да. Emacs меня поразил. Причём не тогда, когда я начал его использовать, а гораздо позже, когда я понял идею лиспа и лисп-машины. А автор пакета instead-mode как раз я, но в нём больше нет смысла, так как он был заточен только для stead2.

Ещё есть у меня есть вот такая поделка https://github.com/spline1986/fb2-mode

Сыроватая, но пользоваться можно. А так как в имаксе есть из коробки отличные закладки, становится и вовсем неплохо. Правда сам я читаю со смартфона =)

z22ysVJ0Efrg7syklNCA

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to Anotheroneuser

AL>> Оно самое. Но оно требует некоторой настройки

Anotheroneuser> Да, правда )) У меня уже требует вовсю.
Anotheroneuser> Вот два снимка. Пытаюсь разобраться
Anotheroneuser> 1. https://yadi.sk/i/iZPvDb6E3a2gTL
Anotheroneuser> 2. https://yadi.sk/i/TLr6JNf43a2hJd

Нужно то, что между ними. Вообще вот мой вариант конфигурации:

====
;;;
;;; EMMS
;;;
(require 'emms-setup)
(require 'emms-volume)
(require 'emms-player-simple)
(emms-all)
(setq emms-mode-line-format "")
(emms-playing-time-enable-display)
(define-emms-simple-player xmp '(file)
(regexp-opt '(".AMF" ".ADSC" ".669" ".DIGI" ".DBM" ".MDL" ".PSM" ".FAR"
".FT" ".XM" ".GMC" ".IMF" ".IT" ".LIQ" ".MTM" ".NTP"
".MMD0" ".MMD1" ".MMD2" ".MMD3" ".OKTA" ".PTM" ".MOD"
".PT36" ".EMOD" ".RTM" ".STM" ".S3M" ".SFX" ".ST26" ".ULT"
".amf" ".adsc" ".digi" ".dbm" ".mdl" ".psm" ".far"
".ft" ".xm" ".gmc" ".imf" ".it" ".liq" ".mtm" ".ntp"
".mmd0" ".mmd1" ".mmd2" ".mmd3" ".okta" ".ptm" ".mod"
".pt36" ".emod" ".rtm" ".stm" ".s3m" ".sfx" ".st26" ".ult")) "xmp" "-q")
(define-emms-simple-player zxtune123 '(file)
(regexp-opt '(".pt3" ".PT3" ".ay" ".AY" ".stp" ".STP" ".stc" ".STC"
".stp1" ".STP1" ".pt2" ".PT2")) "zxtune123" "--silent")
(define-emms-simple-player sidplay '(file)
(regexp-opt '(".SID" ".sid")) "sidplayfp" "-q")
(define-emms-simple-player mpg '(file)
(regexp-opt '(".mp3" ".MP3")) "mpg321" "-q" "b 2048")
(setq emms-player-list '(emms-player-mpg
emms-player-ogg123
emms-player-xmp
emms-player-zxtune123
emms-player-sidplay))
(setq emms-volume-amixer-control "Master")
====



Однако тут много лишнего. xmp, zxtune123 и sidplayfp тебе вряд ли нужны. Так что можно сократить до

====
;;;
;;; EMMS
;;;
(require 'emms-setup)
(require 'emms-volume)
(require 'emms-player-simple)
(emms-all)
(setq emms-mode-line-format "")
(emms-playing-time-enable-display)
(define-emms-simple-player mpg '(file)
(regexp-opt '(".mp3" ".MP3")) "mpg321" "-q" "b 2048")
(setq emms-player-list '(emms-player-mpg
emms-player-ogg123
(setq emms-volume-amixer-control "Master")
====



Этого уже достаточно для прослушивания ogg и mp3 файлов.

Для более удобного управления можно добавить ещё вот такое

====
;; Emms key bindings
(global-set-key (kbd "C-x p") 'emms-pause)
(global-set-key (kbd "C-<") 'emms-volume-lower)
(global-set-key (kbd "C->") 'emms-volume-raise)

;; *EMMS Playlist* key bindings
(define-key emms-playlist-mode-map (kbd "SPC") 'emms-pause)
(define-key emms-playlist-mode-map (kbd "<") 'emms-volume-lower)
(define-key emms-playlist-mode-map (kbd ">") 'emms-volume-raise)
====



В любом буфере будут работать C-x p для паузы, C-< и C-> для управления громкостью. В буфере плейлиста будет пробел для паузы, < и > для управления громкостью.

kzv40HCqaR9VISXL76eh

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Anotheroneuser

> Я только приступил к изучению.

Если пакет Instead-mode найдётся, обязательно добью Emacs и выкину остальные костыли))

iQZX00zCE8QGI4Osd9dV

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to lnp3

lnp3> Это потрясающая вещь! Завидую, сам-то я так и не сдружился с Emacs, хотя периодически возвращаюсь к нему
Я только приступил к изучению. Присоединяйся. Будем тупорылить вместе.

6TyyOoMy4KxUi5tWbobo

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Andrew Lobanov

> я Emacs MultiMedia System юзаю

Это потрясающая вещь! Завидую, сам-то я так и не сдружился с Emacs, хотя периодически возвращаюсь к нему. Где-то видел сообщение о пакете Instead-mode для Emacs, но так и не нашёл его, а жаль - был бы повод снова переехать в эту замечательную среду.

YKgUvPARbCPBzbqiCzqp

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Andrew Lobanov

AL> Оно самое. Но оно требует некоторой настройки

Да, правда )) У меня уже требует вовсю.
Вот два снимка. Пытаюсь разобраться
1. https://yadi.sk/i/iZPvDb6E3a2gTL
2. https://yadi.sk/i/TLr6JNf43a2hJd

rl8GgqJ3wqTsL2HO2NzC

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Andrew Lobanov

AL> Оно самое. Но оно требует некоторой настройки. Зато можно использовать вместо бэкенда что угодно. У меня одно время за потоковые форматы отвечал mplayer у emms =)
Понял. Сейчас посмотрим..

N381us2RNZ0RVdqMtsBT

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to Anotheroneuser

Anotheroneuser> Это вот это? https://www.gnu.org/software/emms/quickstart.html

Оно самое. Но оно требует некоторой настройки. Зато можно использовать вместо бэкенда что угодно. У меня одно время за потоковые форматы отвечал mplayer у emms =)

iljUTd2Ir6MSqnMb3u0d

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Andrew Lobanov

> Сам то я Emacs MultiMedia System юзаю. Наприкручивал туда всякого и теперь могу слушать через неё форматы от потоковых, до трекерных (включая всякую экзотику типа digiboost), спектрумовских (через эмулятор AY) и комодоровских (которые для C64, через sidplay). После такого функционала уже ничего не вставляет =)
Это вот это? https://www.gnu.org/software/emms/quickstart.html

U7WfSc3EKdexirBeYr9S

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Andrew Lobanov

AL> Как раз i3wm максимально юзабелен прямо из коробки и требует минимум настроек для комфортной работы.

Тогда решено.

dLur9Mqa0Cvsh6bTCyne

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to lnp3

>> Это такая эха про всякие такие штуки. Хотя, здесь, наверное, уместнее было бы писать в linux.14 (это эха про *NIX).
lnp3> О! Спасибо, только сейчас дошло, что это и где я :) Зашёл сюда только ради INSTEAD, а FIDO для меня - тёмный лес. Как-то прошёл мимо, хотя четверть века назад пользовался BBS, даже помню популярную White Bear.

Ну это не совсем фидо, но очень похоже да =)))

Зайди на вебморде в раздел "подписки", там есть список конференций на узле Петра.

>> deadbeef держать только ради конвертации
lnp3> Он, кажется, умер. Застыл на версии 0.7.2 и с 2016 года не обновляется.

Ну я пару раз им пользовался за это время для прослушивания музыки. Честно говоря, не знаю что там дорабатывать можно. Но если и правда помер, то жаль, так как очень годный плеер на самом деле. Сам то я Emacs MultiMedia System юзаю. Наприкручивал туда всякого и теперь могу слушать через неё форматы от потоковых, до трекерных (включая всякую экзотику типа digiboost), спектрумовских (через эмулятор AY) и комодоровских (которые для C64, через sidplay). После такого функционала уже ничего не вставляет =)

u6ENMDRcS528PGwEZS4S

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to Anotheroneuser

Anotheroneuser> Есть ещё кое-что. Из другой оперетты.
Anotheroneuser> Решил тут по рекомендации Петра накатить i3wm и снести Cinnamon.
Anotheroneuser> Там много надо будет настраивать? )) Хочется уже прямо нырнуть в мир без графики, но, как это нередко случается с ныряльщиком, стоишь на берегу, глядя в пучину и х/з.

Как раз i3wm максимально юзабелен прямо из коробки и требует минимум настроек для комфортной работы.

PHf3rW8t3eSg0a9tgUku

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Andrew Lobanov

> Это такая эха про всякие такие штуки. Хотя, здесь, наверное, уместнее было бы писать в linux.14 (это эха про *NIX).

О! Спасибо, только сейчас дошло, что это и где я :) Зашёл сюда только ради INSTEAD, а FIDO для меня - тёмный лес. Как-то прошёл мимо, хотя четверть века назад пользовался BBS, даже помню популярную White Bear.

> deadbeef держать только ради конвертации

Он, кажется, умер. Застыл на версии 0.7.2 и с 2016 года не обновляется.

W55bnFVApoUk9IDZUmO7

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Andrew Lobanov

AL> Вот все эти госштуки такое... Ну такое, в общем =)
Хуже.
Под конец имел опыт работы с системой, которую внедряли, чтобы [s]украсть несколько миллионов народных денег[s] повысить эффективность и т.п. муть.
Это была плохая копия какой-то базы данных с web-управлением. Любые претензии работников к этой системе подавлялись кучкой особо приближённых к руководству исполнителей. Недопереведённая: один «Инструмент Грид» чего стоит. Публично, на общих собраниях. В общем, жуть.

Спрашиваю:

-- Раскройте понятие инструмент Грид.
-- Это просто таблица
-- А почему так и не назвать?
-- Не придирайтесь попусту.

AL> Не получилось бы, так как это, скорее всего, не настоящая сетевая шара. По крайней мере в virtualbox у меня было такое одно время. То есть с точки зрения сети за пределами хоста это просто внутренний каталог машины и без соответствующих настроек туда доступ не получить. Ну или без лома =)

Ну и Слава Богу. А то, там была пара ситуаций неприятных. Но теперь, надеюсь, всё позади.

AL> Да не о чем беспокоиться =)

Есть ещё кое-что. Из другой оперетты.
Решил тут по рекомендации Петра накатить i3wm и снести Cinnamon.
Там много надо будет настраивать? )) Хочется уже прямо нырнуть в мир без графики, но, как это нередко случается с ныряльщиком, стоишь на берегу, глядя в пучину и х/з.

t7wMsTh6ALATXaI0PFJM

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to lnp3

>> Кстати, как с тегами обходишься? Карсишь ли cuesheet-файлы? Можешь куда-нить в develop.16 покидать соответствующие скрипты с комментариями?
lnp3> Не знаю, что такое develop.16

Это такая эха про всякие такие штуки. Хотя, здесь, наверное, уместнее было бы писать в linux.14 (это эха про *NIX).

lnp3> поэтому напишу здесь.

Спасибо. Мне пригодится, так как deadbeef держать только ради конвертации надоело, а самому разбираться до сих пор лень =)

A7EkAwZiy1NQyeW1YBsH

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to Anotheroneuser

AL>> 2Anotheroneuser: никто не зацепится к тебе так просто. Всё в порядке.
Anotheroneuser> Отлично. Благодарю )

Да не за что =)

Anotheroneuser> В любом случае, мне хорошо бы всё проверить.. Не так давно работал в организации, где приходилось со своего бука присоединяться к их лоокальной сети через OpenVPN. Этот Open был установлен в Windows, которая находилась в виртуальной машине. Была она нужна лишь для работы с zakupki.gov.ru (будь оно неладно) и для получения материалов из локальной сети.

Вот все эти госштуки такое... Ну такое, в общем =)

Anotheroneuser> Кроме того, я подключался к их WIFI
Anotheroneuser> С давних пор стихийно завёл на машине общий каталог для обмена данными с виртуальной машиной. Не знал (и до сих пор не совсем понимаю), как можно было по-другому. Решать надо было быстро.
Anotheroneuser> Короче, я, когда в виртуальной винде заглядывал в ... как её там, где отображаются машины, которые в локальной сети работают, и видел свой общий каталог.
Anotheroneuser> Меня пугало, что кто-нибудь посторонний сможет прочитать материалы в моём общем каталоге. Хотя, мы пробовали с сист.администратором это сделать и не вышло.

Не получилось бы, так как это, скорее всего, не настоящая сетевая шара. По крайней мере в virtualbox у меня было такое одно время. То есть с точки зрения сети за пределами хоста это просто внутренний каталог машины и без соответствующих настроек туда доступ не получить. Ну или без лома =)

Виртуальная машина пробрасывает этот каталог в виртуальную же сеть в виде сетевой шары и кроме как на гостевой системе доступ туда не получить. Так что всё достаточно безопасно.

Anotheroneuser> До сих пор меня не оставляет беспокойство.

Да не о чем беспокоиться =)

cPeBajNALtozupRCeUXN

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Andrew Lobanov

AL> 2Anotheroneuser: никто не зацепится к тебе так просто. Всё в порядке.
Отлично. Благодарю )
В любом случае, мне хорошо бы всё проверить.. Не так давно работал в организации, где приходилось со своего бука присоединяться к их лоокальной сети через OpenVPN. Этот Open был установлен в Windows, которая находилась в виртуальной машине. Была она нужна лишь для работы с zakupki.gov.ru (будь оно неладно) и для получения материалов из локальной сети.

Кроме того, я подключался к их WIFI
С давних пор стихийно завёл на машине общий каталог для обмена данными с виртуальной машиной. Не знал (и до сих пор не совсем понимаю), как можно было по-другому. Решать надо было быстро.
Короче, я, когда в виртуальной винде заглядывал в ... как её там, где отображаются машины, которые в локальной сети работают, и видел свой общий каталог.
Меня пугало, что кто-нибудь посторонний сможет прочитать материалы в моём общем каталоге. Хотя, мы пробовали с сист.администратором это сделать и не вышло.

До сих пор меня не оставляет беспокойство..

atBM8K9wrpVEDAFSa6Yi

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Andrew Lobanov

> Кстати, как с тегами обходишься? Карсишь ли cuesheet-файлы? Можешь куда-нить в develop.16 покидать соответствующие скрипты с комментариями?

Не знаю, что такое develop.16, поэтому напишу здесь. Надеюсь, не сильно отругают за оффтопик. В случае чего - мы геологи)

Если исходник, например, в формате wav, разбиваем его на отдельные flac-файлы:

====
mkdir -p ./out
cuebreakpoints "file.cue" | shnsplit -d "./out" -a "outf-" -o flac "file.wav"
====




Если нужно заполнить теги, делаем так:

====
cuetag "file.cue" ./out/outf-*.flac
====




Файлы flac лежат в папке out и теги уже заполнены, осталось их переименовать по тегам:

====
cd ./out
for i in `ls -1 *.flac`; do mv "$i" "`metaflac --show-tag=TRACKNUMBER $i | awk '{print sprintf("%02d", substr($0, 1+index($0, "=")))}'` - `metaflac --show-tag=TITLE $i | awk '{gsub("/", "#", $0); print substr($0, 1+index($0, "="))}'`.flac"; done
====




Самое простое перекодировать flac в mp3 с сохранением тегов:

====
for i in *.flac; do file=`basename "$i" .flac`; ffmpeg -i "$i"  -ab 192k "$file".mp3; done
====




Если нужно убрать flac-файлы после получения mp3-файлов, немного модифицируем строку:

====
for i in *.flac; do file=`basename "$i" .flac`; ffmpeg -i "$i"  -ab 192k "$file".mp3; rm "$file".flac; done
====


ZnfSYPQNGayOxOtqjryO

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to Anotheroneuser

Anotheroneuser> Чтобы далеко не ходить, вот кусок man ssh:
Anotheroneuser> ====
Anotheroneuser> NAME
Anotheroneuser> ssh — OpenSSH SSH client (remote login program)

Anotheroneuser> SYNOPSIS
Anotheroneuser> ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
Anotheroneuser> [-D [bind_address:]port] [-E log_file] [-e escape_char]
Anotheroneuser> [-F configfile] [-I pkcs11] [-i identity_file] [-L address]
Anotheroneuser> [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
Anotheroneuser> [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
Anotheroneuser> [-w local_tun[:remote_tun]] [user@]hostname [command]
Anotheroneuser> ====
Anotheroneuser> в SYNOPSIS [квадратными кавычками] [что] [отделено] [друг от друга]?
Anotheroneuser> Это отдельные команды для ssh?

Это необязательные ключи и параметры. То есть, если посмотреть на этот текст, очевидно, что ssh должен получить хотя бы один параметр - hostname. Остальное является не обязательным, но полезным. Например

====
$ ssh spline@hostname -p404
====



Это одна команда. Обязательный hostname, необязательное имя пользоватея (spline) и подключение устанавливается не на стандартном порту, а на порту 404. Про порты это отдельная тема, относящаяся к сетям, которую можно раскрыть, если хочешь.

Anotheroneuser> ssh -F
Anotheroneuser> // запустится configfile

Нет. Выругается.

====
$ ssh -F ~/configfile
====



ssh запустится, загрузив указанный конфигурационный файл.

Anotheroneuser> ssh -I
Anotheroneuser> // запустится какой-то pkcs11

====
$ ssh -I /usr/lib/opensc-pkcs11.so spline@hostname
====



Здесь ssh запустится с поддержкой указанной библиотеки для работы со смарт-картами.

Anotheroneuser> Что необходимо читать инструкции, понятно. Но таким, как я, нужны инструкции к инструкциям.

Просто программы имеют своё назначение и с некоторыми без знания соответствующей предметной области не разобраться. Для понимания работы ssh сверх команды

====
$ ssh spline@hostname
====



Не повредит понимание криптографии на пользовательском уровне и некоторое понимание сетей.

Anotheroneuser> По поводу остального, честно говоря, даже внимания не обратил. Видимо, у вас уже профессиональный взгляд -- суть улавливаете без напряга и есть возможность обращать внимание на детали.

Всегда и во всём так.

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

Всегда и во всём есть только один способ получения навыков - опыт =) К терминалу нужна привычка. Например, я несколько лет шёл к скриптописательству, но там немного отдельная история. Не было интернета (только диалап по несколько часов в месяц) и литературы. Приходилось учить всё методом научного тыка. А вот с безлимитом некоторый опыт стал приобретаться =)

AAL5Pwk1RKfqaFyStp6F

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to lnp3

>> ссылка на черновик нового учебного материала по адресу https://guide.bash.academy/
lnp3> А мне не понравилось. Много лишней информации, дурацкие (на мой взгляд) картинки, оформление ни в какие ворота не лезет: серый шрифт на светло-сером фоне, тёмно-серый на чёрном фоне. Чрезвычайно раздражающая подача с огромным количеством воды. Баш изучать не надо, им надо начинать пользоваться с первой минуты. Решайте текущие задачи на баше, пусть даже мелкие, незначительные - потом это окупится. При таком подходе спустя короткое время начнёте писать скрипты, без которых не сможете обойтись.

На самом деле надо просто понять что терминал это "stream of bytes" и понять что такое пайпы и перенаправления. Остальное уже детали конкретного шелла и действительно изучается практикой.

lnp3> Я свои годами таскаю за собой. До сих пор конвертирую flac в mp3 в консоли))

Кстати, как с тегами обходишься? Карсишь ли cuesheet-файлы? Можешь куда-нить в develop.16 покидать соответствующие скрипты с комментариями?

yCohw4jzTqScu4R3CGy2

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to Anotheroneuser

lnp3>> Зачем же так насиловать себя?
Anotheroneuser> Я находился во власти мнения, что писать команды надо «изящно». В той теме на ЛОРе все говорили о каком-то изяществе команд. Что это значило, я плохо понимал и решил просто поверить.
Anotheroneuser> С того сайта есть ссылка на черновик нового учебного материала по адресу https://guide.bash.academy/. Там, в принципе, понятно написано.. Единственно, если читать и переводить на ходу, мозг закипает. Но это, наверное, пройдёт.

Ни один ученик гончара не создаст изяшную вазу пока не наберётся опыта. Для начала надо научиться писать так, чтобы работало =)

Ну и не забывать про волшебную команду man.

lnp3>> Начинать лучше с чего-то такого: http://linuxgeeks.ru/bash-intro.htm
Anotheroneuser> Вот благодарю.

Кстати, хорошая штука.

3zobjtl6PBmYXaLPIvP1

Re: Освоение BASH, The Super Dimension Fortress (SDF) Andrew Lobanov to Peter

Peter> Для того, чтоб к тебе кто то зашёл, ты должен понять сервер ssh у себя и создать пользователя. :)

Вообще, как-то однажды я наблюдал проброс сессии мультиплексора через исходящее ssh-соединение. Прихожу как-то с работы, а у жены кто-то её систему ковыряет. Она сидит такая перед монитором, смотрит на это да чаёк попивает. А белого IP у меня тогда не было. Оказалось, у неё что-то в её gentoo сломалось при обновлении (она идеологически на тильде сидела, которая тестинг по сути), а я в генту ни бум-бум. В итога в инце выцепила чувака, который ей согласился помочь. Она зацепилась к его серверу по ssh через tmux, а он через это соединение зацепился за её тмукс и получил доступ к шеллу. Я забыл уже как это было сделано, так как на практике не пригодилось, а прошло уже лет шесть.

Но это точно не случай Anotheroneuser =)

2Anotheroneuser: никто не зацепится к тебе так просто. Всё в порядке.

exH5L88zGNmFhJmdDtwE

Re: Освоение BASH, The Super Dimension Fortress (SDF) btimofeev to Anotheroneuser

Anotheroneuser> в SYNOPSIS [квадратными кавычками] [что] [отделено] [друг от друга]?
Anotheroneuser> Это отдельные команды для ssh?

В квадратных скобках указываются необязательные параметры для программы. Эти параметры можно указать или пропустить в зависимости от того, какую функцию должна выполнить программа.

W2qeBpXDil81rrTHjcz9

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to lnp3

> Зачем вам ssh? Куда вы коннектитесь?

Да вот к ним: The Super Dimension Fortress (SDF)
Это было рекомендовано в материале, который вам не понравился. Я только механически выполнил рекомендованные инструкции и всё. Ну и удивился, конечно. 《Хренасе, -- думаю. -- Говорящая консоль》

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

А так, ssh мнедействитель ни к чему. Удалённых машин пока нет:)

wkYRm4uqnzBm6JqJGSmw

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Anotheroneuser

> в SYNOPSIS [квадратными кавычками] [что] [отделено] [друг от друга]?
> Это отдельные команды для ssh?
Это опции команды ssh, которые модифицируют её поведение.

> ssh -F config_file
Это указание на конфиг-файл, который нужен, чтобы каждый раз не писать кучу разных ключей и параметров. При указании его, отключается дефолтный конфиг.

> ssh -I
Я это не использовал. Что-то из области повышенной безопасности при помощи сторонних ключей, сертификатов и т.д. Подключаюсь по ssh к своему VPS стандартным образом, чего хватает за глаза - у меня же не ракетная база :)

Зачем вам ssh? Куда вы коннектитесь? Вы же только начали изучать bash, а там есть более интересные вещи.

sZAW6vrAIGKjhOCqK7cu

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to lnp3

lnp3> им надо начинать пользоваться с первой минуты. Решайте текущие задачи на баше, пусть даже мелкие, незначительные - потом это окупится
Стараюсь так и делать. Довольно увлекательное занятие. Но некоторых вещей понять не могу.

Чтобы далеко не ходить, вот кусок man ssh:

====
NAME
ssh — OpenSSH SSH client (remote login program)

SYNOPSIS
ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
====


в SYNOPSIS [квадратными кавычками] [что] [отделено] [друг от друга]?
Это отдельные команды для ssh?

ssh -F
// запустится configfile

ssh -I
// запустится какой-то pkcs11

Верно?
Что необходимо читать инструкции, понятно. Но таким, как я, нужны инструкции к инструкциям.

По поводу остального, честно говоря, даже внимания не обратил. Видимо, у вас уже профессиональный взгляд -- суть улавливаете без напряга и есть возможность обращать внимание на детали.

s7DJ2StC1ohPLpAYnzQq

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Anotheroneuser

> ссылка на черновик нового учебного материала по адресу https://guide.bash.academy/
А мне не понравилось. Много лишней информации, дурацкие (на мой взгляд) картинки, оформление ни в какие ворота не лезет: серый шрифт на светло-сером фоне, тёмно-серый на чёрном фоне. Чрезвычайно раздражающая подача с огромным количеством воды. Баш изучать не надо, им надо начинать пользоваться с первой минуты. Решайте текущие задачи на баше, пусть даже мелкие, незначительные - потом это окупится. При таком подходе спустя короткое время начнёте писать скрипты, без которых не сможете обойтись. Я свои годами таскаю за собой. До сих пор конвертирую flac в mp3 в консоли))

TVcp2eOpb2qHH7i0wvz2

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to lnp3

lnp3> Зачем же так насиловать себя?
Я находился во власти мнения, что писать команды надо «изящно». В той теме на ЛОРе все говорили о каком-то изяществе команд. Что это значило, я плохо понимал и решил просто поверить.
С того сайта есть ссылка на черновик нового учебного материала по адресу https://guide.bash.academy/. Там, в принципе, понятно написано.. Единственно, если читать и переводить на ходу, мозг закипает. Но это, наверное, пройдёт.

lnp3> Начинать лучше с чего-то такого: http://linuxgeeks.ru/bash-intro.htm
Вот благодарю.

V8eGzI4irjLXBXhckyNo

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Peter

Peter> Вот можно подключиться по телнету сюда и посмотреть фильм =)

Peter> telnet towel.blinkenlights.nl

А-фи-геть )) И не думал, что подобное возможно.
Star Wars в терминале

XR90CIAOiqYZ3YoBdErR

Re: Освоение BASH, The Super Dimension Fortress (SDF) lnp3 to Anotheroneuser

> - Взявшись за изучение программирования и следуя наставлениям (которые в книге), начал изучать и BASH.
> В качестве учебного материала (по совету, отрытому где-то на ЛОРе) использую https://mywiki.wooledge.org/BashGuide.
Зачем же так насиловать себя? Начинать лучше с чего-то такого: http://linuxgeeks.ru/bash-intro.htm

kOdYeWEyv62ABEDQ7KHg

Re: Освоение BASH, The Super Dimension Fortress (SDF) Peter to Anotheroneuser

> Для несведущего это выглядит как связь из ниоткуда в никуда ))

Вот можно подключиться по телнету сюда и посмотреть фильм =)

telnet towel.blinkenlights.nl

lkgr1nfp7HoQYOy3r6tM

Re: Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to Peter

Peter> Для того, чтоб к тебе кто то зашёл, ты должен понять сервер ssh у себя и создать пользователя. :)

Поднять сервер?.. Но я там у них зарегистрировался. Или это -- регистрация на их сервере? В общем, ладно. Если сервера нет, значит всё безопасно.
Мне просто интересно было попробовать связаться с людьми вот так -- через консоль. Для несведущего это выглядит как связь из ниоткуда в никуда ))

maWY6nZuQPtwmLSP6x2e

Re: Освоение BASH, The Super Dimension Fortress (SDF) Peter to Anotheroneuser



Anotheroneuser> Вопрос
Anotheroneuser> Поскольку я ssh использовал впервые, то безопасности ради можно узнать -- ко мне в компьютер сейчас залезть никто не может? )) Или надо почистить что-нибудь там в этом ssh? Или сессия прекращается с момента, когда закрываешь терминал?

Для того, чтоб к тебе кто то зашёл, ты должен понять сервер ssh у себя и создать пользователя. :)

4LF5nfOAQk7yAJUiD4DQ

Освоение BASH, The Super Dimension Fortress (SDF) Anotheroneuser to All

История такова

- Взявшись за изучение программирования и следуя наставлениям (которые в книге), начал изучать и BASH. Конечно же, сразу, как и многие, пришёл к выводу, что BASH -- это форсаж, кураж и высший пилотаж. В качестве учебного материала (по совету, отрытому где-то на ЛОРе) использую https://mywiki.wooledge.org/BashGuide.

- В этом mywiki.wooledge.org/BashGuide была следующая рекомендация:
> If you would prefer to experiment with the bash shell on a remote computer or cannot > currently install a bash shell on your own device, you might be interested in a remote shell > service such as The Super Dimension Fortress (SDF).
Я залез в The Super Dimension Fortress (SDF) через 'ssh new@sdf.org' и некоторое время там находился, тупя и беседуя с кем-то по прозвищу «спокойствие».
Впечатления хорошие. Такое ощущение, что участвуешь в фантастическом фильме про космос, посылая сигналы на другой корабль: каждый символ высвечивался секунды по две.

Вопрос
Поскольку я ssh использовал впервые, то безопасности ради можно узнать -- ко мне в компьютер сейчас залезть никто не может? )) Или надо почистить что-нибудь там в этом ssh? Или сессия прекращается с момента, когда закрываешь терминал?

MIMzUV6TUA1gsYHAlzBQ

Механизм выражения чувств и впечатлений Anotheroneuser to All

# Буду короче.

После игры в игру или использования программы, или чтения литературы-с-участием пользователь/читатель/участник испытывает гамму чувств в различном диапазоне. Это очень ценная энергия, поскольку она может устремиться на лопасти проекта и помогать вращаться его валу, раскручиваться его маховику (и так далее).

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

Мне показалось, что путь к самовыражению в INSTEAD не столь явен, каким мог бы быть, и чувства запираются в человеке, вместо того, чтобы остаться в памяти проекта.
С одной стороны, это неплохо: мы учимся жить, как в стихотворении Тютчева Silentium.
С другой стороны, кому-то может быть не до Silentium-а.

====
— Можете курить..

Шелленберг курил «Кэмэл», только «Кэмэл» и никаких других сигарет не признавал.
Когда Гиммлер спросил его, почему он курит вражеские сигареты, Шелленберг ответил: «Воистину — куришь американские сигареты, скажут, что продал Родину».
Гиммлер этого не забыл.
====



# Как это реализовано у других

Просто по памяти.

1. В Play Market
Есть возможность оставлять отзывы. Несмотря на призывы авторов писать на Github, электронную почту или ещё куда-нибудь, мы всё равно пишем отзывы в «Отзывах», потому что все остальные способы предполагают наличие выдержки. А она у большинства из нас нуждается в серьёзной тренировке.

2. Когда-то в Program Manager для Linux Mint
Была возможность оставлять отзывы прямо в окне GUI для установки программы. Отличная идея, и многие пользовались ею до тех пор, пока Лефебр не подумал, что убрать всё на форум будет прикольнее. Не знаю, как там статистически, но, кажется, с GUI было намного уютнее.

3. Давным-давно, в какой-то программе для торрентов... U-Torrent или наподобие.
Прямо в программе было окно для отзывов о загруженном материале, которые мог читать очередной загружальщик. Там почти никто ничего не писал. Наверное, возможность была не столь известна или к её использованию люди призывались не слишком активно. Но было здорово заглядывать в бездну сквозь иллюминатор отдельного собственного космического корабля.

# Как это в INSTEAD

Сразу после игры по-первой я лез в раздел «Информация» и, конечно, находил в результате нужный путь. Но если б побыстрее, то, возможно, сведения о произведённом игрой впечатлении были бы ярче.
По-крайней мере, человеку можно дать определённые рекомендации о том, как вести себя после игры.
Ну, скажем:

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

Побудь наедине с собой, отбери и ограни собственные мысли. Если не уверен, что знаешь, как это сделать, то не смущайся: никто не знает.

Можешь следовать нехитрым рекомендациям, которые в своё время помоги и нам. Можно работать с ними в привычном текстовом редакторе. Если привычного у тебя нет, то рекомендуем попробовать какой-нибудь свободный: EMACS, VIM, Geany и другие.

Вот эти рекомендации.
Пункт 1. Расположиться за машиной и слегка погрузиться в себя;
Подпункт 1. Приступить к размышлению.
Вопрос 1. Что мне понравилось?
Ответ 1. ...
Вопрос 2. Что держало меня в неприятном напряжении?
Ответ 2. ...
Вопрос 3. Что мне хотелось бы видеть другим?
Ответ 3. ...
Подпункт 2. Завершить размышление и приступить к заключению.
Пункт 2. Выгрузиться из себя и передать результат своих наблюдений по адресу: <адрес>
»

# Заключение

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

Может быть, всё устроено наилучшим образом и необходимо оставлять себе время на переживание, осмысление и формулирование своих чувств и мыслей, а уж после — их осознанное выражение.
В последнее время всё более склоняюсь к тому, что данная модель является крайне удачной для любой деятельности и, особенно, для творческой..

Но для обсуждения данную тему всё же предлагаю.

S8xDYymskkCTb1O4qK3p

Бета версия INSTEAD 3.2 Peter to All

В общем я решил поступить так.
Бинарные сборки бета версии будут появляться здесь: http://instead.syscall.ru/instead/3.2-beta/

После НГ если новых багов не будет выявлено, то это и станет релизом 3.2.
Если нет - новый заход.

Прошу всех кто собирает бинарные сборки - начать их собирать и пробовать. Спасибо!

iem0okO4PigoWzUcAW5Q

Re: INSTEAD на Sailfish OS Peter to Peter

Порт instead в warehouse.

hHxSPDlhNjQwutVrgCa0

Re: INSTEAD на Sailfish OS Peter to Peter

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

cM9CmPMTQmPxyCGEl7mr

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Да и Android с абсолютными путями работает.
Можешь глянуть ветку #ifndef ANDROID в util.c
Только для UNIX сборки используются chdir, getcwd а в остальных - формируются полные пути и просто идет работа по ним.

2n9EF0SSggLLY77G1Gyz

Re: Сборка INSTEAD для WinRT Peter to Antokolos

> Скорее всего, дело в относительных путях,
wince версия полностью избавлена от относительных путей.
Собственно инстед от них избавлен начиная с wince версии.
Все chdir/getdir - реализованы внутри и всегда работают с абсолютными путями (по кр мере в wince)
Именно поэтому берется argv[0] в начале, чтоб найти абсолютный путь.
Ты можешь даже в UNIX версии заменить в src/util.c реализацию setdir и прочих - и будет все на абсолютных путях.

Так что я считаю надо доотладить.

Все api по работе с дирами находится в src/util.c

Hb46pkEJkPVirMqwtilW

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Здорово, да можно сильно не торопиться :)
Больше всего меня тревожит, что не все игры работают.
Скорее всего, дело в относительных путях, ибо мне даже при распаковке пришлось в одном месте хачить, чтобы всегда абсолютные пути передавались.
Это т.к. https://docs.microsoft.com/en-us/cpp/cppcx/crt-functions-not-supported-in-universal-windows-platform-apps
_chdir _wchdir _getcwd _getdcwd _wgetcwd _wgetdcwd The concept of a working directory doesn't apply to Windows 8.x Store apps. Use full paths instead.

HLYLHjCLUKSzN1hpBSYk

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Отлично. Вечером пофикшу мелочи и снова буду думать про дальнейшие мержи.
Идет процесс не быстро так как много навалилось работы. :(

7uOxAFAgCSDVuCC71veO

Re: Сборка INSTEAD для WinRT Antokolos to Antokolos

P.S. извиняюсь, не перечитал то, что написал :(
6) Соответственно, в файле https://github.com/Antokolos/instead/blob/winrt /VisualC-WinRT/src/SDL2_winrt.cpp убрал использование winrt.h и всегда использую uwp.h

I38TGOnuD5dsF6z1Vstn

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Итак:
1) Сделал git clone https://github.com/instead-hub/instead в пустую папку
2) Скопировал туда папки VisualC и VisualC-WinRT из https://github.com/Antokolos/instead/tree/winrt
3) Открыл свой проект
4) В файле windows.c пришлось сделать изменение
#ifndef _MSC_VER
#include <dir.h>
#endif
ибо файл dir.h он не находит
5) В файле https://github.com/Antokolos/instead/blob/winrt/VisualC-WinRT/src/uwp.h пришлось сделать изменение -- убрал #ifdef _UWP в третьей строчке, т.к. теперь я использую его вместо удалённого winrt.h.
6) Соответственно, в файле https://github.com/Antokolos/instead/blob/winrt/VisualC-WinRT/src/SDL2_winrt.cpp убрал использование winrt.h и всегда использую winrt.h
7) Убрал использование _USE_UNPACK у себя в проекте, т.к. этот код ещё не смёржен.
8) Приложение как для WinRT, так и для UWP собралось, туториал запустился.

v2zBYAkZRBRls0h7KRW9

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Да, конечно, тут. Буду пробовать, спасибо!

B2dhG2qSJMTaCPYbhJXl

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Ты тут?

Я тут все таки пытаюсь разгрести сборку INSTEAD. Нужно, чтоб ты проверил следующую версию в git.

Описываю суть изменений.

1) системные include находятся ТОЛЬКО в src/instead/system.h ВСЕ условные СИСТЕМНЫЕ включения должны быть ТАМ, кроме специфичных инклюдов в архитектурных файлах (windows.c и так далее)
2) В файлах ios.h, s60.h и так далее (если они нужны!) описываются только НЕ СИСТЕМНЫЕ отличия. Для примера смотри ios.h. winrt.h и wince.h удалены
3) Я не понимаю такую конструкцию:

====
#ifdef _MSC_VER
#include "unistd.h"
#define PATH_MAX MAX_PATH
#else
====



Дело в том, что инклюды с "" (в отличие от <>) это инклюды НЕ СИСТЕМНЫХ файлов. Я не понимаю, как ты собрал src/instead/* если в system.h есть инклюде <dirent.h> безусловный, а в windows.c он под ifdef да еще и в "". Так что чтоб не путаться я это удалил и пробуем еще раз, если можно.

4) никаких больше PATH_MAX, единственное место где он есть это system.h который включается через externals.h


Что нужно? Внести изменения ТОЛЬКО в system.h для того, чтобы сборка прошла успешно для всех наших целей.

Поможешь?

P.S. я проверил сборки: windows, s60, wince и unix/linux -- они работают

После того как мы наведем порядок на этом уровне, можно будет снова пытаться как то сливать изменения

3hB9i7uWYhUBNfH5BprK

INSTEAD на Sailfish OS Peter to All

Дали поиграться с телефоном на Sailfish OS (Jolla C).
Конечно же, первым делом попробовал собрать INSTEAD.
Две новости: хорошая и плохая. :)

Хорошая новость -- собрать инстед легко. И я даже смог поиграть в minerbold.

Плохая новость: SDL2 на сейлфише недопилен.

- Координаты точскрина приходят в ненормализованной форме. (Пиксели а не float).
- События точа не эмулируют клики мыши (как это сделано во всех других мобильных платформах).
- Совсем нет звуков
- Ну и разбираться с поворотом экрана

Я понял, что порт возможен и если им заняться, то его можно получить. Но для этого нужны определенные усилия. Телефоны jolla у нас редкость, так что статус порта пока -- "заморожен".

P.S.

https://together.jolla.com/question/109036/bug11928-sdl2-is-still-broken/

Не похоже, что проблемы будут исправлены. :(

tG6wu3Gkm5BamWuLbzAq

Re: Сборка INSTEAD для WinRT Peter to Antokolos

> Самый последний коммит там (_USE_UNPACK support) посвящён дополнениям для того, чтобы можно было собрать с флагом _USE_UNPACK

Понял, буду смотреть.

Hv95qWfBEkOhFr7wGklR

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Вот тут вот новая ветка winrt, основанная на этом патче
https://github.com/Antokolos/instead/tree/winrt
Самый последний коммит там (_USE_UNPACK support) посвящён дополнениям для того, чтобы можно было собрать с флагом _USE_UNPACK

yG1yaqin6AcMM71znEkf

Re: Сборка INSTEAD для WinRT Peter to Antokolos

> Да, конечно.
Пушнул патч.

6DagEPY4HqUPzl2COEBn

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Да, конечно.
Я на его базе ещё дополню немного, может, будет проще и в этих изменениях разобраться. Ну или в отдельной ветке пустим, посмотрим, как пойдёт.

mNw6mil0dpMkDpArk48F

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Я предполагал что winrt.h используется только в winrt.c просто.

Есть смысл хотя бы такой патч мержить?

KimxNb5Go7gFmjR42V7Z

Re: Сборка INSTEAD для WinRT Antokolos to Peter

В целом, оно собралось и заработало
только вот в winrt.h пришлось поправить

====
#ifdef __cplusplus_winrt
extern "C"
{
#else
extern
#endif
void getAppTempDir(char *lpPathBuffer);
#ifdef __cplusplus_winrt
}
#endif
====


вместо просто extern void

f6Ir9acmZuyMN7Ko9VMg

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Текущую ветку winrt переименовал у себя на github в winrt-initial
Когда у нас устаканится полностью с патчем, видимо, придётся создать новую ветку winrt, основанную уже на патче, но с моими доп. изменениями, которые в патч не вошли.

5NSyAba4tNRMUnYnBMuX

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Да, конечно, попробую.
Ещё вчера допилил немного, чтобы архивы поддерживались и на Windows Phone 8.1 (который у меня в виде физ. устройства)
Благодаря поддержке архивов, появилась возможность потестировать не только на туториале. Есть как радости, так и печали.
Карантин работает
Miner Bold работает, мультитач в наличии
Поддержка jpg отвалилась
Поддержка mp3 отвалилась
Поддержка трекерной музыки отвалилась
В штурмане какая-то ошибка со спрайтами
В Варваре ошибка при использовании io.open в lua
В общем, надо смотреть и тестировать...

MuOsY4jPOcMB0YW62NaZ

Re: Сборка INSTEAD для WinRT Peter to Antokolos

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

Но могу частично, как это было сделано с андроид. В принципе, это не так уж и плохо. :) А winrt изменения можно выкладывать на instead-hub рядом.

Тут столько всего смешано, а я не могу это развести нормально, ибо не владею платформой. Я сделал патч, на том уровне, на котором у меня он не вызывает вопросов, но там не все. Проверишь?

http://instead.syscall.ru/downloads/winrt.patch

8zSeM2kjRZJOcODLyVt1

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Небольшое вдохновляющее видео:
https://youtu.be/wBirQPnbA3c
Прикрутил ассоциацию приложения с zip-архивом, теперь можно просто скачать игры на SD-карту и запускать. Таким образом, можно и без ланчера обойтись, но с ланчером всё же было бы чуть получше.

09rSPg0weUVTsgkheZ4U


Re: Сборка INSTEAD для WinRT Peter to Antokolos

> При попытке засунуть реализацию create_dir_if_needed в SDL2_winrt.cpp получаю такие ошибки:
А как ты ее засовываешь? Можно показать конечный cpp?

PaWcej8yqO2xavPEI5Lb

Re: Сборка INSTEAD для WinRT Antokolos to Peter

При попытке засунуть реализацию create_dir_if_needed в SDL2_winrt.cpp получаю такие ошибки:

2>c:\work\instead-win\instead\visualc\instead_compat\instead_compat.shared\unistd.h(50): error C2371: 'int8_t': redefinition; different basic types
2> c:\program files (x86)\microsoft visual studio 14.0\vc\include\stdint.h(17): note: see declaration of 'int8_t'
2>c:\work\instead-win\instead\visualc\instead_compat\instead_compat.shared\dirent.h(924): error C2440: '=': cannot convert from 'void *' to 'dirent **'
2> c:\work\instead-win\instead\visualc\instead_compat\instead_compat.shared\dirent.h(924): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
2>c:\work\instead-win\instead\visualc\instead_compat\instead_compat.shared\dirent.h(975): error C2664: 'void qsort(void *,std::size_t,std::size_t,int (__cdecl *)(const void *,const void *))': cannot convert argument 4 from 'void *' to 'int (__cdecl *)(const void *,const void *)'
2> c:\work\instead-win\instead\visualc\instead_compat\instead_compat.shared\dirent.h(975): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

cIuhFAnotIQYLVQpyRYb

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Да, только там вызывается, извиняюсь, запутал.
Я имел в виду, что в моём коде копипаст этой функции содержится в windows.c и winrt.c, и лучше было бы сделать имплементацию где-то в utils.c, без копипаста.
Ещё кое что. Я таки починил использование _USE_UNPACK в своём коде, теперь архивы открываются нормально. Поэтому просьба попробовать замёржить ещё и это. Сегодня запушил немного нового кода на эту тему в свою ветку, но там были и ранее коммиты на эту тему.
Смотри дефайны _WIN_EXT. Вообще, многие из тех мест, возможно, можно и без дефайнов сделать, там я просто использую немного другие функции Windows (CreateFile2 вместо CreateFile, SetFilePointerEx вместо SetFilePointer), но это, конечно, надо тестить.
Ещё, есть дефайн _WIDE_CHARS. Это потому, что TCHAR оказался widechar и пришлось применять mbstowcs
Надеюсь, понятно объяснил. Будет круто, если получится это тоже сделать.

RZVGQSFViq2kKjqxrekK

Re: Сборка INSTEAD для WinRT Peter to Antokolos

> 3) Не вставил реализацию int create_dir_if_needed(char *path). Лучше куда-нибудь в utils, т.к. она используется и в UWP (где я использую windows.c) т.к. и не в UWP (где я использую winrt.c). Если посмотришь мой последний коммит, то там ещё будет функция dir_exists(), её тоже надо.

Я нашел вызов create_dir_if_needed() только из SDL2_winrt.cpp, откуда второй вызов?

0aRKHLyzYOEmQB6aBIb3

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Ещё надо добавить файлик SDL_main.c, либо сделать это дефайном.
Там, по сути, та же main, которая названа SDL_main.
Это надо для сборки обычной десктопной версии через Visual C.

YMD8PKAJN7zvEJqVYTHC

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Угу, спасибо, понял. В выходные попробую 2ю итерацию.

k8czRZrfjbsRBj1eWXzK

Re: Сборка INSTEAD для WinRT Antokolos to Peter

1) Надо добавить SDL2-WinRTResource_BlankCursor.cur и SDL2-WinRTResources.rc файлы

2) В system.h изменить дефайны немного:

#if defined (_WIN32_WCE) || defined(WINRT)
#define PATH_MAX 255
#define errno 0
#define putenv(a) ;
#ifndef WINRT
#define strerror(a) ""
#define setlocale(a, b) ;
#endif
#endif

т.к. strerror и setlocale определены

3) Не вставил реализацию int create_dir_if_needed(char *path). Лучше куда-нибудь в utils, т.к. она используется и в UWP (где я использую windows.c) т.к. и не в UWP (где я использую winrt.c). Если посмотришь мой последний коммит, то там ещё будет функция dir_exists(), её тоже надо.

4) В windows.c
#if !defined(_UWP && defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0A00
Не закрыл скобку после _UWP

5) SDL2_winrt.cpp не может найти uwp.h, впрочем, если его удалить, то работает.

Когда поправил эти 5 пунктов, то всё запустилось

ujJXrnLW7l5WsmA51hDj

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Спасибо, постараюсь попробовать вечером.
Кстати, сделал ещё один коммит, чтобы поддержать -gamespath, -themespath, если соответствующие папки созданы.
Попутно выяснил, что трекерная музыка, похоже, не поддерживается...

e35wTAfVRJ0zF5pSR5bR

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Да, сложно идет. :( В патчах оч тяжело разбираться, так как туда постоянно попадают изменения из vs. Ну и переводы строк у многих файлов сбиты,
Я попробовал сделать первый вариант патча: http://instead.syscall.ru/downloads/winrt.patch

Я использовал WINRT вместо __WINRT__, дело в том, что в библиотеки инстед вообще нет зависимости от SDL2, так что придется -DWINRT выставлять при сборке.

Это патч на мое git дерево instead. Покрути пожалуйста, расскажи если что не так?

dxDNSzOw1B5WvcG2yWAy

Re: Сборка INSTEAD для WinRT Antokolos to Antokolos

Сделал, закоммитил
файлы:

SDL2-WinRTResource_BlankCursor.cur
SDL2-WinRTResources.rc
SDL2_winrt.cpp
SDL_main.c

Ещё в этом коммите чуточку зааффектились файлы из самого Инстеда

V1QV9oeSgFQwz03n2z41

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Можно попытаться. Тогда попробую и отпишу.

zKv7qI3kLmab2yks2gs5

Re: Сборка INSTEAD для WinRT Antokolos to Peter

не. Можем же собирать для Windows 7 с помощью MSVC
Можно попробовать определять UWP как if _WIN32_WINNT >= 0x0A00 , как предлагали

zmeLU8ifIt1id2TjFSwI

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Дошел до такой проблемы.
Есть функция getAppTempDir()
Но определена она совсем в другом участке кода.
Можно ли этот .cpp код как то оформить как часть src?
Примерно как symbian.cpp или ios.m.
То есть сейчас есть некая хаотичная архитектура сборки, которую я пытаюсь причесать.

Еще пример: файл uwp.h, который не инклюдится из src/

UzCEnEe7RpvrHiBPT7IV

Re: Сборка INSTEAD для WinRT Peter to Antokolos

У меня вопрос, не означает ли UWP просто комбинацию:
собираем для windows, собираем MSVC (а не mingw?)

8F9oLFt5iXoi6jbeeHYY

Re: Сборка INSTEAD для WinRT Antokolos to Antokolos


(22:15:56) Antokolos: https://msdn.microsoft.com/en-us/library/b0084kay.aspx
(22:16:26) Antokolos: _MSC_VER -- вот этим можно заменить _MSVCC, думаю
(22:16:46) Antokolos: если есть _MSC_VER, то компилится Visual Studio

XAML -- это вот: https://ru.wikipedia.org/wiki/XAML
Насколько я понял, его поддержка в SDL экспериментальна, и мы можем её не включать. В принципе, и так работает же. Это я пытался победить кривой ресайз при повороте, но так и не вышло.
посмотри Commit a293e9d0 insteadxaml done, _WINRT => __WINRT__
Можно исключить из него всё, не связанное с переименованием _WINRT => __WINRT__

_UWP можно заменить на такое:
https://social.msdn.microsoft.com/Forums/en-US/51f29cfe-d07f-4898-9962-945ed7b66d7f/predefined-macro-to-identify-uwp?forum=wpdevelop
#if _WIN32_WINNT >= 0x0A00
// Windows 10 and/or Universal Windows Platform
#endif

IZ2ZHhiPhWENjEznfCOn

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Peter> 3) откуда берутся дефайны и что значат:
все дефайны берутся из моего проекта, кроме __WINRT__ -- он делается прям в SDL
Peter> _UWP
Если билдим UWP-приложение, для Win8.1 и WinPhone8.1 эти части не нужны
Peter> __WINRT__
Если билдим UWP или Win8.1 или WinPhone8.1, проставляется в SDL
Peter> _WINRT_XAML
Для поддержки XAML. Можем исключить как её, так и код, связанный с этими дефайнами, как писал ранее
Peter> _WIN_EXT
Это я пытался сделать _USE_UNPACK. Пока не вышло, можно не мёржить всё, что с этими дефайнами связано
Peter> _MSVCC
Билд с помощью Visual Studio. Может, есть какой-то стандартный дефайн для этого, не знаю. Вроде бы он только в паре мест, там какие-то хедеры не нашлись или что-то типа того

ezPAFAFzQeOn5XLhPV29

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Peter> 2) что такое nativewindow?
Это закодированный в строку указатель на нативное окно. См. опять же тот пример от DavidLudwig
Мы можем не делать XAML, тогда не нужно то, что под дефайнами _WINRT_XAML, nativeWindow и работа с ним и метод с циклом тоже

2IznrGDkSccbO7O0DeEJ

Re: Сборка INSTEAD для WinRT Peter to Antokolos

while() == EAGAIN это и есть 1 такт. Просто за этот такт делается несколько вещей. такой ход позволил заметно ускорить emscripten сборку.
Я короче попробую через этот же. тогда....

FFfUvmA1YCnSTTRZivQC

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Конкретно этот код делался по образцу вот этого:
https://bitbucket.org/DavidLudwig/sdlskeletonxaml81/src/5c4b3d98d57bad82190e8d6d0a48532cbc0421db/SDLSkeletonXAML81/SDLSkeletonXAML81.Shared/main.cpp?at=default&fileviewer=file-view-default
Т.е. нужно передать указатель на некий коллбэк одного игрового такта, принимающий опциональный void* параметр. Именно не while, а один такт
Может быть, можно попробовать и по другому, проверим, конечно.
Ещё я попробовал вчера использовать _USE_UNPACK, и вроде бы даже оно собралось. Но при проверке оказалось, что код-таки не работает. Поэтому я _USE_UNPACK пока убрал, и соответствующие коммиты в коде Инстеда можно, наверно, не мёржить (дефайны _WIN_EXT)... Ну или разобраться до конца :)

z1HyNPysfIYKrNM74FkM

Re: Сборка INSTEAD для WinRT Peter to Peter

3) откуда берутся дефайны и что значат:
_UWP
__WINRT__
_WINRT_XAML
_MSVCC
_WIN_EXT

Не может быть так, что, скажем, _WIN_EXT лишняя, а по сути это _UWP?

Я почти сделал патч но в него не попало:
create_dir_if_needed (это по идее внешняя штука, находящаяся в обвзязке)
nativeWindow - я не понимаю пока что это и насколько оно нужно? 1в1 перенести пока не могу поэтому
все что зависит от _WIN_EXT

Расскажи plz об этом?

Lv4kQiqSd94AMnOuzzBk

Re: Сборка INSTEAD для WinRT Peter to Peter

2) что такое nativewindow?

qyM1VpCEiWic8MxGzjwK

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Я начал переносить те изменения, что касаются кода INSTEAD, и у меня появляются вопросы.
1) почему void _game_cycle(void *userdata) не вызывает просто game_void_cycle? Есть какие то основания так не делать?
Я иногда немного меняю код, так что потом придется еще раз все проверить...

po4VFeBplmNyuUiJnu82

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Круто! Отличные новости!
Я обязательно попробую позже смержить!

e2eD62AsLjAxVGznwKwM

Re: Сборка INSTEAD для WinRT Antokolos to Peter

По новостям работы над портом:
1) Победил, наконец, баг с неподвижной мышью. Всё оказалось проще, чем я думал: я просто забыл подложить два файлика из исходников SDL в проект (курсор и *.rc-файл)

2) В попытках победить баг с неподвижной мышью сделал UWP-версию, так что Инстед для XBOX стал ближе :) UWP-версия закоммичена.

3) Ещё есть экспериментальная XAML-версия для Windows 8.1, основанная на коде SDL из вот этой ветки: https://bitbucket.org/DavidLudwig/sdl/branch/xaml
Соответствующие изменения в коде под дефайном _WINRT_XAML
Ещё не определился, стоит ли её оставлять. С одной стороны, она вроде бы работает, с другой стороны, та ветка SDL не обновлялась с 2015 года, возможно, автор решил не доделывать или сделать как-то по другому.

4) Повороты так и не победил, так что пока успокоился на том, что всегда передаю -hires и -modes , к примеру, в виде 480x800,800x480
При дебаге выяснил, что SDL_ListModes выдаёт только один режим, к примеру, 480x800, поэтому без передачи -modes и не работает

5) При дебаге видно, что SDL_VideoWindow = SDL_CreateWindow(...) даёт NULL => Fallback to software window.
ОДНАКО, далее по коду Renderer = SDL_CreateRenderer(SDL_VideoWindow, -1, SDL_RENDERER_ACCELERATED) НЕ даёт NULL, так что даже не знаю, с ускорением получается графика или нет :)
Есть вот такой проект: https://github.com/Microsoft/angle
Если собрать в нём DLL-ки libEGL.dll, libGLESv2.dll и подложить в проект, то SDL_CreateWindow(...) уже успешно создаёт окно. Однако, непонятно, нужны ли реально такие заморочки. Может быть, сейчас просто всё работает через DirectX, поэтому и не создаётся окно с флагом OPENGL. Рендерер-то, похоже, всё же ускоренный получается...

6) И при сборке для Win 8.1, и при сборке для UWP выставляется дефайн __WINRT__. Его вообще выставляет SDL, можно даже не прописывать в дефайнах проекта.
Есть ещё дефайны _MSVCC;_UWP; -- сборка Visual C компилятором и сборка для UWP, соответственно.

В общем, теперь есть:
1) Рабочий порт на Windows 8.1
2) Рабочий порт на Windows Phone 8.1
3) Рабочий порт для UWP (т.е. всех устройств под управлением Windows 10)
4) Код здесь: https://github.com/Antokolos/instead/tree/winrt

Ещё можно покопаться с флагом _USE_UNPACK, пока что он отключен. Плюс, не знаю, как там с трекерной музыкой, нужно тестировать. На туториале ошибок нет :)

Теоретически, на этом можно собирать standalone-игры и выкладывать в Windows Store, если заменить в исходниках Инстеда tutorial своей игрой.
Ланчера, разумеется, нет, надеюсь, что у Каспера получится справиться с luasocket для Навигатора, тогда можно попытаться его прикрутить сюда.
Ну и аккаунт разработчика мой для Windows Store, оказывается, протух, ибо он покупается сроком на год. Надо будет обновить...

qpetXmilw9lTbzydvuU2

Re: Сборка INSTEAD для WinRT Peter to Antokolos

> При этом, если -modes и -hires переданы, то всё выглядит корректно, но не поворачивается (что нормально)
Да, поворачивается оно только если ширина == высоте. В противном случае ротация блокируется.
По идее, нужно реализовать функции: rotate_landscape(), rotate_portrait() и unlock_rotation() и посмотреть когда они вызываются...

В ANDROID и IOS при повороте (если он не залочен) срабатывает :

====
    case SDL_WINDOWEVENT_SIZE_CHANGED:
====


в input.c
И вот в эту ветку тоже можно смотреть.

8GLnNT4OSSfQozDhZkat

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Если НЕ передаю -modes, то показывает строчку
fprintf(stderr, "Fallback to software renderer.\n");
Если передаю -modes, то в это место не приходит
При этом, если -modes и -hires переданы, то всё выглядит корректно, но не поворачивается (что нормально)
Наверно, действительно software-режим...

EgCgJAjDMBB9UWik2LIe

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Вроде бы в modes мы просто передаем допустимые разрешения. Если sdl работает корректно, то это не обязательно. А так мы типа сами говорим что за режимы мы умеем.
По идее растягивание в nohires тоже аппаратная штука. И это тоже под теми же ифдефами. Мы делаем масштабируемое окно. Это не работает в software режиме. При загрузке инстеда он не пишет что включил software? А так оно само должно просто оастянуться.

sMzAjLAuRGyXqB0O04TI

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Последние новости с полей: код для поворотов почти работает. По крайней мере, удалось увидеть нормальную картинку в Landscape-режиме.
Напомни-ка, пожалста, что мы передаём в параметр modes?
-modes w1xh1,w2xh2

где w1,h1 -- w, h для портретного режима,
w2,h2 -- w, h для landscape

так, или как-то по другому?
пока что, если включён -hires, то всё круто. Если -nohires, то при повороте в лэндскейп получается маленький участок в центре. Что-то такое точно было на Андроиде.
Код в свою ветку пушнул.

yXuA5nA9X2RkgIKHfl2S

Re: Сборка INSTEAD для WinRT Antokolos to Peter

По поводу кода для поворотов. Искать по #if defined(IOS) || defined(ANDROID) ?
Он в каком-то конкретном месте или надо во все такие места засунуть дополнительный дефайн?

n6fVLiKzIIzSwFZPobOV

Re: Сборка INSTEAD для WinRT Antokolos to Peter

>> Начал коммитить вот в эту ветку: https://github.com/Antokolos/instead/tree/winrt
>> Надеюсь, так будет легче делать патчи.

Peter> Ага! Здорово! Только, наверное, стоит себя в заголовки winrt.c вписать. Ну и быть не против, что код, написанный тобой, будет под MIT. =)
Не против, конечно! Сделаю.

VwCwXLcIIxSGMAcFuTDs

Re: Сборка INSTEAD для WinRT Peter to Antokolos

> Начал коммитить вот в эту ветку: https://github.com/Antokolos/instead/tree/winrt
> Надеюсь, так будет легче делать патчи.

Ага! Здорово! Только, наверное, стоит себя в заголовки winrt.c вписать. Ну и быть не против, что код, написанный тобой, будет под MIT. =)

toEfSfR2AWsIredFGdS6

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Начал коммитить вот в эту ветку: https://github.com/Antokolos/instead/tree/winrt
Надеюсь, так будет легче делать патчи.
добавил winrt.c, winrt.h, попытался сделать дефайн _WINRT
Как будто бы пока всё запускается, но баги с мышью и ориентацией пока не фиксил

b8PGIKFMdPC3jboEaUrG

Re: Сборка INSTEAD для WinRT Peter to Antokolos

> Вообще по коду: я могу попробовать начать менять сам, вводить дефайны итд. Просто как тебе потом проще будет, разбираться в моём коде или написать самому :)

Имхо на данном этапе нужно посмотреть что там с ротацией. Включить код для поворотов экрана и посмотреть на люмии -- все ли ок.
А так -- любой вариант норм. Мне в слепую сложновато делать патч, но думаю по твоим наработкам это будет не сложно.

g5KY48C23IPoOZ4McoIJ

Re: Сборка INSTEAD для WinRT Peter to Peter

Просто делаем winrt.cpp наряду с winrt.c и в нем все что надо на cpp, а из C вызываем это все как extern "C"...
Примерно как сделано с symbian.cpp

xAj8SSC9c0paSsR2Inzz

Re: Сборка INSTEAD для WinRT Peter to Antokolos

>Гуглил по запросу "общая temp папка в WinRT", но что-то ничего не нашёл... Возможно её и нет

https://stackoverflow.com/questions/32099821/equivalent-of-the-gettemppath-on-windows-phone

Второе сообщение по ссылке, вроде оно...

GwKOwcAm1cdOAhlzzAQp

Re: Сборка INSTEAD для WinRT Peter to Antokolos

> В одном файлике забыл :) См. в патче
Ага, еще раз пушнул.
> См. в VisualC-WinRT/WinPhone81_VS2015/instead/instead/instead.Windows/winrt_main.cpp, что я передаю в этот tmppath.
Ты можешь оформить эту свою функцию как extern "C" { и вызывать из самого инстеда в принципе....

upV7zslixKDZWpRnY9Oh

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Обновил http://nlbproject.com/dist/instead-win.zip
Теперь Инстед запускается на Windows Phone мобиле, т.е. второй проект тоже рабочий! Кроме того, выделил все доп. библиотеки типа lua, iconv в отдельные подпроекты. В будущем их можно будет использовать в других проектах Visual Studio.
Но все эти проекты в основной репозиторий коммитить пока ещё не стоит, работа пока не закончена...
Кроме того, вытянул из git те изменения, которые ты пушнул и снова пропатчил в необходимых местах, патч instead-win.patch в архиве.

Peter> Насчет локали, дело в том, что Ex функция насколько я понимаю возвращает wchar строку, а не char.
Peter> То-есть эту строку надо потом сконвертить в обычную строку char. А wchar это и есть 'r', 0, 0, 0, 'u', 0, 0, 0 -- вот ты и увидел 'r'
Так и есть, исправил это место, теперь корректно возвращает "ru"

Peter> inline заменил на __inline
В одном файлике забыл :) См. в патче

Peter> Про tmp -- просто давай выберем какой должен быть путь для winrt и его введем в winrt.c
Гуглил по запросу "общая temp папка в WinRT", но что-то ничего не нашёл... Возможно её и нет, там что-то было про права доступа WinRT приложений, и они ограничены.
Я таки сделал параметр tmppath, погляди, пожалуйста. Если одобришь, то так проще всего. Там есть код для получения темповой папки, доступной приложению, но он на C++, и я не знаю, как его вкорячить в C.
См. в VisualC-WinRT/WinPhone81_VS2015/instead/instead/instead.Windows/winrt_main.cpp, что я передаю в этот tmppath.

Вообще по коду: я могу попробовать начать менять сам, вводить дефайны итд. Просто как тебе потом проще будет, разбираться в моём коде или написать самому :)
Если что, это всё не горит, конечно, я могу пока попробовать UWP скомпилить или ещё что-нибудь. Например, сделать сборку Windows-версии Инстеда через Visual Studio.

N7q26z3j19tTvLIjgYXY

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Насчет локали, дело в том, что Ex функция насколько я понимаю возвращает wchar строку, а не char.
То-есть эту строку надо потом сконвертить в обычную строку char. А wchar это и есть 'r', 0, 0, 0, 'u', 0, 0, 0 -- вот ты и увидел 'r'

d7hEvE0VLwFmLVgOwvzZ

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Кое что пушнул:
inline заменил на __inline
void * -> char * тоже
FREE(opt_lang) -- вероятно какой то баг в первичном присвоении opt_lang, там определяется язык по локали, и делается strdup.

Про tmp -- просто давай выберем какой должен быть путь для winrt и его введем в winrt.c

LDukjjKtfdSojMv5OLPi

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Про то, что ещё есть в проекте:

instead/VisualC-WinRT/WinPhone81_VS2015/instead/instead/instead.Shared
тут дополнительные h и c файлы, без которых не собиралось, немного пропатченные. Кроме того, тут есть папки games, lang, stead, themes из INSTEAD, но это я, думаю, уберу, включив их в проект непосредственно из кода INSTEAD. Они копируются в папку собранного приложения как ресурсы.

instead/VisualC-WinRT/WinPhone81_VS2015/instead/instead/instead.Windows
instead/VisualC-WinRT/WinPhone81_VS2015/instead/instead/instead.WindowsPhone

папки подпроектов для Windows и WindowsPhone. Пока рабочий только Windows. Тут же winrt_main.cpp для запуска. На всякий случай, включил свою копию в каждый из проектов.

instead/VisualC-WinRT/WinPhone81_VS2015
Тут подпроекты для lua52 и libiconv. Возможно, их нужно вынести на уровень выше. И возможно, сделав нормальный Visual Studio проект для libiconv. Для lua52 такой уже есть, правда, для Windows 8.1, а не для WindowsPhone 8.1

Что ещё добавим:
в папку instead/VisualC-WinRT добавлю подпапку с проектом UWP_VS2015. Это та самая Universal Windows Platform, которая Windows 10. Можно посмотреть в исходниках SDL, как у них сделано.

ещё можно добавить instead/VisualC, чтобы собирать обычный INSTEAD компилятором Visual Studio. В SDL соответствующий проект есть.

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

1wO8otj7QcXI44jSlJMU

Re: Сборка INSTEAD для WinRT Antokolos to Peter

Обновил http://nlbproject.com/dist/instead-win.zip
См. патч внутри: instead/instead-win.patch
Объяснение некоторых моментов патча:

-static inline int game_cycle(void)
+static __inline int game_cycle(void)
компилятор ругался на слово inline. Погуглив, узнал, что для C-кода нужно использовать __inline
см. https://msdn.microsoft.com/ru-ru/library/bw1hbe6y.aspx
Ключевое слово inline доступно только в C++. Ключевые слова __inline и __forceinline доступны как в C, так и в C++.
Если другими компиляторами соберётся так, наверно, можно оставить так. Если нет, можно сделать #define. Причём, это дефайн не только на WinRT, а на компиляцию с помощью Visual Studio в целом.

-<-----><------>pixels += pitch * queue_y1 + queue_x1 * psize;
+<-----><------>pixels = ((char*) pixels) + pitch * queue_y1 + queue_x1 * psize;
Компилятор ругался на то, что к указателю типа void* неприменима операция +=

- #define errno 0
- #define strerror(a) ""
+ ///#define errno 0
+ ///#define strerror(a) ""
#define putenv(a) ;
- #define setlocale(a, b) ;
+ ///#define setlocale(a, b) ;
errno, strerror, setlocale оказались определены и эти дефайны вызывали ошибку компиляции

-#include <dir.h>
+///#include <dir.h>
компилятор не смог найти этот инклюд

char *dirpath(const char *path)
{
<----->static char fp[PATH_MAX * 4];
-<----->if (path[0] == '/')
+<----->if (path[0] == '/' || path[1] == ':')

Абсолютный путь начинался с C:, добавил проверку на символ :, чтобы отследить эту ситуацию.

/// Antokolos: dirname & basename copied from S60 above
Линкер сказал о ненайденных символах dirname и basename, скопировал их реализацию из S60, вроде сработало

-<----->libwince_init(argv[0], 1);
-<----->wince_init(argv[0]);
+<----->///libwince_init(argv[0], 1);
+<----->//setdir("./");
+<----->//strcpy(game_cwd, "./");
+<----->//wince_init(argv[0]);
+<----->unix_path(argv[0]);
+<----->strcpy(game_cwd, argv[0]);
тут надо ещё посмотреть, возможно, можно использовать wince_init и в исходном виде. libwince_init вроде не нужна

-<-----><------><------>FREE(opt_lang); opt_lang = strdup(langs[i].file);
+<-----><------><------>/// Antokolos: for some strange reason, this FREE call triggers a breakpoint in MSVCPP :(
+<-----><------><------>///FREE(opt_lang);
+<-----><------><------>opt_lang = strdup(langs[i].file);
тут вот действительно странно, но на этом вызове FREE происходит вылет, отладчик страшно ругается про Exception Thrown.
Проблема в том, что этот FREE ещё много где встречается, просто пока повезло на него не напороться

-#include <dir.h>
+///#include <dir.h>
+#include "unistd.h"
dir.h компилятор не нашёл, в unistd.h были какие-то из неопределённых символов

-<----->if (!GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_SISO639LANGNAME,
+<----->/// Antokolos: Note LOCALE_NAME_USER_DEFAULT instead of LOCALE_USER_DEFAULT
+<----->if (!GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_SISO639LANGNAME,
GetLocalInfoA не нашёл линкер. Загуглил, что нужно использовать GetLocaleInfoEx. Оказалось, что правда. Однако, результат выполнения функции "r" вместо "ru". Поэтому пока захардкодил в "en", а по хорошему надо разобраться...

char *game_tmp_path(void)
{
+<----->return "/tmp";
пока так, ибо текущий код не проходит линковку. Было бы здорово, если бы можно было передавать темп. папку через командную строку INSTEAD, я смогу это сделать из winrt_main.cpp.

mzIhT0u3THI7jyhQZKOV

Re: Сборка INSTEAD для WinRT Peter to Antokolos

Проверь в отладчике, что находится в game_cwd, после инициализации?
Это когда из argv[0] получаем текущий путь. Это в instead_main непосредственно перед setdir() вызовом...

vdAdG5EStafJAAnAAJom

Сборка INSTEAD для WinRT Antokolos to All

Всем привет!
Давно хотел собрать INSTEAD для Windows Phone, и, наконец, что-то начало получаться.
http://nlbproject.com/dist/instead-win.zip
Проект открывать через Visual Studio 2015, может, можно и более поздней версией.
Солюшен в папке instead/VisualC-WinRT/WinPhone81_VS2015/instead/instead.sln
В папке instead свежесклонированная версия instead, которую я слегка пропатчил.
В данный момент сборка базируется на _WIN32_WCE, но надо будет переделать с новым ключом. Есть также некоторые недоделки.
Самая существенная недоделка в том, что игры пока не запускаются :) INSTEAD запускается, можно лазить в меню настроек, менять язык. Но игры из папки games не считываются.
По поводу папок INSTEAD (games, lang, themes, ...): они лежат в instead/VisualC-WinRT/WinPhone81_VS2015/instead/Debug/instead.Windows/AppX
argv почему-то передаётся как NULL, поэтому я подменяю argv[0] на ".". Кстати, в WinRT какая-то проблема с правами доступа, при открытии произвольного пути типа "C:\\Downloads\\" возникает ошибка.
Для сборки понадобились кое-какие файлы, скачанные где-то в Интернете. Они лежат в instead/VisualC-WinRT/WinPhone81_VS2015/instead/instead/instead.Shared
dirent.h слегка подправлен, другие, кажется, не менял, или почти не менял :)
В солюшене два проекта: instead.Windows и instead.WindowsPhone. Этот тип проекта рассчитан на создание универсального приложения для Win 8.1, но я пока мучал только десктопную версию.
В проекте instead.Windows только один cpp файл, winrt_main.cpp, запускалка. В проект для instead.WindowsPhone надо будет добавить какой-то аналогичный.
Файлы для libiconv в папке есть, но в проекте его поддержку пока не включал.
Запускать из Visual Studio по CTRL+F5, т.к. при запуске с дебаггером окно приложения через какое-то время отваливается. Не знаю точно, баг это или фича.
При попытке запустить собранный exe-шник возникает сообщение "Это приложение может работать только в контексте контейнера приложения". Наверно, для WinRT это норма.
Если есть опытные Windows-разработчики, то их помощь будет очень кстати. Если получится осилить сборку таких приложений, то можно будет размещать Инстед-игры в Windows Store. Ну и вообще, это круто :)

b03mgbgVZgKKGZiQkdoY

INSTEAD 3.1.0 Peter to All

Инстед 3.1.0 вышел!

Выпущена новая версия INSTEAD 3.1.0. Кроме новых возможностей и исправленных ошибок, данная версия примечательна тем, что у INSTEAD появился новый официальный порт! INSTEAD-EM – emscripten порт INSTEAD, предназаначенный для запуска в WEB, который выглядит в вашем браузере точно так же, как и обычная версия INSTEAD. Прямо сейчас вы можете запустить любую игру из репозитория здесь: http://instead-games.ru/em.php.

Кроме того, версия 3.1.0 проходит подготовку для включения ее в Debian. Итак, список изменений:

* новый EMSCRIPTEN порт;
* исправлена ошибка деления на 0 в rnd;
* исправлена ошибка в loadmod (при вызове из gamefile);
* исправлена ошибка в path (.walk как функция);
* исправлены ошибки в документации;
* шумы Перлина (instead.noise1/2/3/4);
* pixels: scale()/rotate().

Бинарные сборки будут появляться по мере их готовности. И спасибо всем тем, кто поддерживает проект!

K1tAQa10ZyBpilfcyCU6

Шумы перлина в будущем INSTEAD (3.1.0) Peter to All

Пушнул сегодня эту функциональность. Удобна для генерации текстур, облаков и прочего подобного...

DMi9HOMzljiNJmpnXeT3

Re: INSTEAD на emscripten Peter to Antokolos

> Да, было бы здорово.

После сборки у меня в ~/.emscripten_cache и ~/.emscripten_ports лежат собранные либы и сорцы SDL2.
Я зашел в ~/.emscripten_ports/sdl2/SDL2-version_13/src/video/emscripten
И заменил файл SDL_emscriptenevents.c на https://raw.githubusercontent.com/emscripten-ports/SDL2/master/src/video/emscripten/SDL_emscriptenevents.c

После этого стер ~/.emscripten_cache/asm.js/sdl2.bc и пересобрался.

По хорошему нужно просто как то сказать emscripten использовать другой порт поновее, ну или ждать новую версию.

NA0aFPzwzuHlNPGrJ8Mq

Re: INSTEAD на emscripten Antokolos to Peter

>Если нужно, могу подробно описать что я сделал.
Да, было бы здорово.

bKWA2ks4Yoag0S8LBjYR

Re: INSTEAD на emscripten Peter to Antokolos

> Интересно:
> 1) Куда реально попадают сохранения? Это же где-то в браузере должно храниться?

В local storage

> 2) Какие именно изменения сделаны в "пропатченном Emscripten"? Критично ли это для конечного результата?

Работа на мобильных устройствах. Странно, но в гит у них это исправлено, а в zip порта sdl2 нет. Я руками заменил файл и дособрал. Если нужно, могу подробно описать что я сделал.

DUZSft2ixyVRqX5HgA9A

Re: INSTEAD на emscripten Antokolos to Peter

Собрал INSTEAD-EM ещё раз после нашего вчерашнего разговора в чате.
Демо Варвара без музыки (~40MB)
http://nlbproject.com/instead-em/instead-em.html?barbarian_caves_demo_nosound.zip
Демо Варвара с музыкой (~60MB)
http://nlbproject.com/instead-em/instead-em.html?barbarian_caves_demo.zip

Версия с форума в конечном итоге упала с ООМ, поэтому в своём варианте я заменил
-s ALLOW_MEMORY_GROWTH=0
на
-s NO_EXIT_RUNTIME=1 -s ALLOW_MEMORY_GROWTH=1

Падение произошло во время игры в кубики. Попробуйте её найти, это хороший стресс-тест для INSTEAD-EM :)

С моей скоростью интернета версия игры без музыки качается минуты полторы-две, уже более или менее

Интересно:
1) Куда реально попадают сохранения? Это же где-то в браузере должно храниться?
2) Какие именно изменения сделаны в "пропатченном Emscripten"? Критично ли это для конечного результата?

85ifCBxkbLFWLypp9jD3

Re: INSTEAD на emscripten Peter to Peter

Версия обновлена. Теперь и на мобилках. Но дизайн не адаптирован. В самом инстеде поиграйтесь с настройками разрешения, если будет мелко...

http://syscall.ru/games/

mqpbqVeAwFydDAV9zdWu

Re: INSTEAD на emscripten Peter to Peter

INSTEAD-EM близок к релизу!

Почти все мои игры в веб варианте здесь:

http://syscall.ru/games/

Если что, все есть в git :)

M5CKFt5afz25QU4HmnWN

Re: INSTEAD на emscripten Peter to Peter

Исправил работу с конфигурационным файлом:

http://instead.syscall.ru/downloads/instead-em/project.html

09W7MZWfShc7qUDOvtWG

Re: INSTEAD на emscripten Peter to Peter

Обновил.
Сохранение настроек. Добавил игру про кота. :) В целом, все работает.
В git пушнуты изменения (скрипт сборки).

http://instead.syscall.ru/downloads/instead-em/project.html

A2vXbPMqGnBieW7YzsuB

Re: INSTEAD на emscripten Peter to Peter

Еще хорошие новости.
Заработала трекерная музыка в полном объеме!
Обновил версию:

http://instead.syscall.ru/downloads/instead-em/project.html

Кроме того, сейвы работают, правда пока локально для браузера.

uYrzaU2VIXjtCO0eoBUF

Re: INSTEAD на emscripten Peter to Peter

Еще дополнение. На chromium у меня не упало даже с музыкой. Перезалил обновленную версию. Добавил несколько игр:
http://instead.syscall.ru/downloads/instead-em/project.html

В браузере должен быть включен webgl.

J1FJIcDjXmWGC62eyhWv

Re: INSTEAD на emscripten Peter to Peter

Новая информация по emscripten сборке.
1) Все желающие с Linux могут попробовать собрать себе instead-em сами. Вот скрипт, который у меня собирает все зависимости и сам инстед:
https://github.com/instead-hub/instead/blob/master/contrib/instead-em-build.sh
Конечно, могут быть какие-то косяки, но в целом -- смотря внутрь скрипта не сложно разобраться что происходит.

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

3) С сохранениями не разбирался, но нашел такую статью: http://www.alternativegames.net/blog/porting-to-emscripten/ где это вроде описывается.

4) Есть проблема -- почему то на андроиде не пашет мышка. Такое чувство, что canvas не получает фокуса или что то такое.

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

Минусы -- нужна поддержка webgl, нестабильная музыка.

В целом, мне нравится, но нужно дальше развивать проект. Я пока делаю перерыв. Если есть желающие помочь/поэкспериментировать -- буду рад!

0sijWvSPc5LLV7Z62zzV

Re: INSTEAD на emscripten Peter to Antokolos

> Отличные новости!
> Интересно, в чём была проблема прошлой Emscripten-версии, которая подтормаживала?
> сборочный скрипт для Emscripten будет прямо в основном репозитории Инстеда?

Там проблемы были в цикле обработке, в реализации таймера в SDL emscripten, в сборке SDL_mixer...

В основном репозитории думаю что как закончу все, что то положу точно. Или readme, или скрипты... А код уже пушаю по тихоньку.

Ну и вот, для первого тестирования прототипа (пока не оптимизированно по скорости, но по моему и так хорошо шпилит):
http://instead.syscall.ru/downloads/instead-em/project.html

Известные проблемы:
1) не всегда грузятся ogg шки
2) иногда исключение на рестарте
3) save пропадают

GA8HnUIBq67FPkr3r9BG

Re: INSTEAD на emscripten Antokolos to Peter

Отличные новости!
Интересно, в чём была проблема прошлой Emscripten-версии, которая подтормаживала?
А сборочный скрипт для Emscripten будет прямо в основном репозитории Инстеда?

c7LPc3mQ6jKnvzTN8iEO

INSTEAD на emscripten Peter to All

Сегодня удалось собрать сабж. С минимальными изменениями. Игры работают, и работают быстро! В том числе те, что со спрайтами. Fps в аркадах 60 fps. :)

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

Проблемы:
1.Переделать фейдинг
2.Музыка ogg (звуки уже работают)
3.Поддержка трекерной музыки
4.Поддержка iconv
5.Сохранения (сейчас они не переживают сессии)

Из всего этого, не знаю как решить 5. Может быть, поможет technix. Остальное, вроде понятно как делать.

Я думаю, что пока попридержу новый релиз до того момента, когда закончу изменения для emscripten

9bJa3PPQp7kxEq6WkHm1

Re: Вопрос по таймеру Peter to Antokolos

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

HU3UED2HNRMBEXLZCSLZ

Re: Вопрос по таймеру Antokolos to Peter

Peter> Очень мне хочется, чтоб вы пощупали новые спрайты. В stead3. Ибо там они автоматом освобождаются. И мало кто их тестил. ;) У самого пока руки никак не дойдут до творчества...
Пощупаем-пощупаем :) В планах перевод конструктора на stead3, заодно и генерируемый код надо причесать.
А кстати, sprite.free() осталась, но теперь ничего не делает?

775OEMOZ7KPREYJYRBFL

Re: Вопрос по таймеру Peter to Antokolos

Очень мне хочется, чтоб вы пощупали новые спрайты. В stead3. Ибо там они автоматом освобождаются. И мало кто их тестил. ;) У самого пока руки никак не дойдут до творчества...

JLFLRDRM4SKUBWE3L56N

Re: Вопрос по таймеру Antokolos to kerber

kerber> onmouseover для спрайта хотеть! Покажешь потом как сделал? Я, когда делал панорамы и дёргал функцию отрисовки в таймере, обрамлял рассчёт каждой линии рендера вызовом stead.busy() чтобы не залипал курсор. Этот же трюк использовал в шахматах. Там тоже на планшете медленно ходы обдумывает. Посмотри, может пригодится где-нить.
kerber> https://yadi.sk/d/pmvrIvW5xiXbZ
kerber> http://instead-games.ru/game.php?ID=225

Спасибо, погляжу!
Ну, а по поводу onmouseover идея простая. Постоянный таймер + stead.mouse_pos() даёт координаты, и есть два спрайта, обычный и при наведённой мыши. С помощью модуля vn в нужный момент показывается нужный спрайт.
Более подробно можно в Варваре посмотреть, только там страшный код, конечно :)
Ну или вот есть более простой пример:
https://yadi.sk/d/bj-eEC403DszoC
Только модуль там староват, я его постоянно обрабатываю напильником.
Последние версии смотреть здесь:
https://github.com/Antokolos/NLB/blob/master/NLBL/src/main/resources/vnstead/modules/vn.lua

3VCC4J45RJ5ZCBM5HG4X

Re: Вопрос по таймеру kerber to Antokolos

onmouseover для спрайта хотеть! Покажешь потом как сделал? Я, когда делал панорамы и дёргал функцию отрисовки в таймере, обрамлял рассчёт каждой линии рендера вызовом stead.busy() чтобы не залипал курсор. Этот же трюк использовал в шахматах. Там тоже на планшете медленно ходы обдумывает. Посмотри, может пригодится где-нить.
https://yadi.sk/d/pmvrIvW5xiXbZ
http://instead-games.ru/game.php?ID=225

ZLSWE6N35YGXX3EI3NXT

Re: Вопрос по таймеру Antokolos to Kerbal

Kerbal> В таймере новый вызов происходит, емнип, через timer:set(n) после отработки старого вызова. Т.е. отработал вызов, ждёт n, новый вызов. Во время n происходят другие события.
Вообще, изначально у меня было так:
в самом начале длительного метода timer:stop(), чтобы точно уже не пришёл новый тик.
в самом конце длительного метода timer:set(n), чтобы вновь запустить таймер.
Однако, это по каким-то причинам иногда стало приводить к тормозам (сейчас делаю Варвара под Андроид, и на слабом планшете это очень чувствуется).
Была даже гипотеза, что какие-то проблемы с освобождением памяти, но нет, это не подтвердилось.
Сейчас у меня timer:set(n) только в функции init(), timer:stop() вообще не используется, т.е. таймер бесконечно молотит.
В результате становится возможным реализовать, к примеру, onmouseover для спрайта.
Единственно вот беспокоил вопрос, не может ли так выйти, что таймер запустится снова, не дождавшись отработки предыдущего вызова.

SCJ3O7MKRPYMAPJKKOK2

Re: Вопрос по таймеру Kerbal to Antokolos

В таймере новый вызов происходит, емнип, через timer:set(n) после отработки старого вызова. Т.е. отработал вызов, ждёт n, новый вызов. Во время n происходят другие события.

3W2V3WI5JHQM4M4AUROJ

Re: Вопрос по таймеру Antokolos to Peter

Peter> Таймер всегда синхронный -- он не прерывает команду инстеда, он обрабатывается между командами и сам может генерировать команду. Насколько я помню -- game.timer это уже производное событие -- которое обрабатывается как обычная команда своим чередом.
Ясно, спасибо! Ну, тогда код упростится :)

JTC5GFF3QMHX6NKLW4T6

Re: Вопрос по таймеру Peter to Antokolos

Таймер всегда синхронный -- он не прерывает команду инстеда, он обрабатывается между командами и сам может генерировать команду. Насколько я помню -- game.timer это уже производное событие -- которое обрабатывается как обычная команда своим чередом.

P.S. для вставки кода юзай такую запись

====
ПРИВЕТ МОНОШИРИЙНЫЙ МИР
====


PQ7KPGCW7CHVMJ6VWZEO

Re: Вопрос по таймеру Antokolos to Antokolos

Antokolos> Возник такой вопрос.
P.S.: Вопрос по STEAD2, но, думаю, в STEAD3 всё примерно так же.

D6RYGYKJW5DRQLDOC7WX

Вопрос по таймеру Antokolos to All

Возник такой вопрос.
К примеру, у нас есть таймер, установленный по timer:set(5)
и вот такой код:

game.timer = stead.hook(game.timer, function(f, s, cmd, ...)
if vn.processing then
return;
end
if not vn.on then
return f(s, cmd, ...);
end
vn.processing = true;
local result = code_that_can_take_more_than_5ms_to_complete();
vn.processing = false;
return result;
end)

Собственно, вопрос: нужно ли вообще это извращение с vn.processing? Или в таймере всё синхронно и новый вызов гарантированно не произойдёт, пока старый не завершён?
А если там реально всё асинхронно, и таймер стреляет с той частотой, что ему указали, будет ли такой код потокобезопасным (в Java я бы точно сказал, что нет, vn.processing нельзя модифицировать без синхронизации, мьютекса итп.)
Ну и вообще, как разрулить такую ситуацию? В идеале хочется, чтобы новый вызов кода по таймеру НЕ происходил, пока старый не отработал.

KGQT62N67NQ5TDD5HC2I

Re: Вопросы генерации сюжета машиной XSet to Peter

Ничего себе, "пока других идей нет", да уже эти две идеи прямо шедевральные и видимо хорошо подходят к возможностям планировщика! Завидую я (белой завистью) вашей созидательности, у меня какая то банальщина в голову лезет по Стругацким. Не обязательно конечно прямо этим сюжеты использовать, но направление мне понравилось, влияние на множество ботов к тому же итеративно. Кстати я изучил этот ваш "Восточный Экспресс", там рельсы сюжета весьма жёсткие, но персонажи действуют непрерывно и отклоняются от прямого выполнения строчка за строчкой, если сильное отклонение, то вылазит побочная концовка и надо продолжать с места ошибки (как фильме Исходный Код). Например можно ничего не делать, тогда в точное время взорвётся спрятанная сербами бомба и герой погибает, а можно выяснить что да как, найти бомбу и обезвредить. Но сюжет по сути один и он прямой, нельзя например снова зарядить бомбу и сойти с поезда оставив бомбу и т.п. Что мне понравилось - время течёт непрерывно, всё живёт и двигается. Что не понравилось - фактически нет общения с персонажами, всё сильно заскриптовано, нет вообще никакой свободы воли.
В общем я хотел бы что то больше похожее на Карантин, чем на пряморельсовый сценарий.

UAHR77WSOCRLZK3SGBFW

Re: Вопросы генерации сюжета машиной Peter to XSet

Сегодня говорил с true-grue и пришел к такому выводу:

Идея хорошо может сработать в ситуации, когда модель становится "объектом", а не "субъектом". Грубо говоря -- боты не могут быть выше создателя, но могут стать "детьми". Чтобы совсем уж не уходить в философию, примеры таких рабочих ситуаций:

1) игра в который гг играет роль психолога, к которому приходят пациенты (со случайными характеристиками, но всегда с какой то аномалией в "параметрах"), и гг пытается исправить ситуацию, влияя на клиента. Клиент приходит к психологу регулярно, в течении нескольких дней. Каждое такое посещение -- это ход игры, за который происходят какие-то события в жизни пациента, о которых тот рассказывает психологу. После первого пациента, после "излечения", приходит другой (более сложный) и так далее... Сам я ненавижу психологию, но тем не менее -- идея рабочая.

2) игра в которой надо предотвратить убийство или самоубийство, путем воздействия на "ботов" в коллективе или индивидуального "бота" (не сторонник таких игр -- но тем не менее -- идея рабочая);

И так далее.... Пока других идей нет. То есть, когда в игре модель становится объектом исследования, все примерно понятно. При этом "моральная составляющая" все-таки конкретна и определена автором сюжета (как цель/результаты игры). Другое дело, что таки игры превращаются в игры - манипуляции "ботами". И хотя это всего-лишь боты -- мне не нравится в целом такая идея. Все-таки, даже в рамках игры это несет некий нехороший посыл, где общение заменяется манипуляцией.

Для себя лично я сделал еще некоторые выводы.

Творчество -- это всегда общение. Общение не возможно без "я - ты" (субъектов). Вся наша жизнь -- это творчество. Новое (творчество) и жизнь -- нераздельные вещи.

RJ6JNF2Y74XEWQTHFVHD

Re: Вопросы генерации сюжета машиной XSet to Peter

В общем я на вашей стороне. На этом этапе покушаться прямо на генерацию сюжетов - это самоубийство и никогда не будет сделано (кроме концептов генераторов сказок). Я долгое время ковырял лингвистику, это адова задача, хотя у меня накоплен немалый задел (в плане материала), в том числе большие тезаурусы с претензией на охват ВСЕГО. :-)

А вот оживить "традиционную" игру некой динамичностью с вариативностью игры персонажей - это более чем реально. Я пилю планировщик и концепт его использования в игре. Пытаюсь придумать какой нибудь сюжет, в рамках которого он выглядел бы красиво (как Карантин).

N6KNJHCMSQYSPVF67HFL

Re: Вопросы генерации сюжета машиной Peter to Antokolos

Про каракули в произведение -- все-таки тут человек участвует. :)
А музыка звучит просто жутко. Слепое мертвое чудовище (с) создает эту музыку, бррр.... Но интересно, конечно, как эксперимент.

QZUIRUHBOHAX62GHXYNG

Re: Вопросы генерации сюжета машиной Antokolos to All

К вопросу о машинном творчестве, кстати. Были статьи про написание музыки компьютером. А ещё нейросеть имитирует стиль художников.
Там тоже есть функция красоты, в музыке гармонии, для картин примеры работ. Хотя все согласны, что что-то тут всё равно не так :)
https://geektimes.ru/post/272430/
https://habrahabr.ru/post/185154/

GZ5MT7DP77K5DKU7RDPD

Re: Вопросы генерации сюжета машиной XSet to kerber

Да. Но хреновина не простая и заточена под странные вещи, поэтому напрямую использовать нельзя, но ознакомиться с подходом ИМХО полезно.

QSAT4IE5N5FZQUGGUJTG


Re: Вопросы генерации сюжета машиной Peter to XSet

А ссылку на источник можно? На этот дэйдример.

3XUL7CP53S2YD6DZA446

Re: Вопросы генерации сюжета машиной XSet to Peter

Если кому интересно:
DAYDREAMER is a cognitive architecture that models the human stream of thought and its triggering and direction by emotions, as in human daydreaming. DAYDREAMER includes: daydreaming goals: strategies for what to think about; emotional control of thought: triggering and direction of processing by emotions; hierarchical planning: achieving a goal by breaking it down into subgoals; analogical planning (chunking): storing successful plans and adapting them to future problems; episode indexing and retrieval: mechanisms for indexing and retrieval of cases; serendipity detection and application: a mechanism for recognizing and exploiting accidental relationships among problems; and action mutation: a strategy for generating new possibilities when the system is stuck. DAYDREAMER is implemented as 12,000 lines of Lisp code.

Автор: крутой перец - Erik T. Mueller - на его логическом движке пашет IBM Watson. Судя по всему при должном масштабе этот подход работает.

P4N6TQG2HG6C7EF3LY6H

Re: Вопросы генерации сюжета машиной XSet to Peter

Кстати вот ещё практический подход, офигенская книга от создателя IBM Watson, я даже нашёл ранние версии кода:
Daydreaming in Humans and Machines: A Computer Model of the Stream of Thought

Попытка научить компьютер фантазировать и порождать сюжеты.

PXZEOKGL6H4XKR6P2WLE

Re: Вопросы генерации сюжета машиной XSet to Peter

Спасибо. Вообще если говорить о генерации сюжетов прямо с нуля, то на ум в первую очередь лезет Пропп с "Морфологией волшебной сказки", вот уж где по полочкам всё размазано.

Я наконец добрался до последних версий своего кода системы вывода и планировщика на старом компе, вроде выглядит неплохо, тут же куча написанных мной же исследовательских текстов по аспектам генерирования сюжетов. Это я написал когда меня накрыло в прошлый раз. Выглядит неплохо, надо интегрировать в Instead, а то я писал под внешнюю Lua IDE. По крайней мере целеориентированная парадигма ИИ с операторами и эффектами GOAP (применяется в когнитивных архитектурах Act-R, SOAR) понятно как работает и она концептуально проста, к тому же совместима со всеми подходами к логическому выводу, хотя как такового вывода не требует.

Задаём операторы (действия) которые создают некий эффект на состояние мира, например если персонаж поест, то он станет сытым, его вес увеличится и т.д., или если дверь закрыта и есть ключ то можно выполнить "открыть". Если дверь открыта, то можно пройти в локацию за ней. Таким образом попасть в локацию за дверью можно только найдя ключ. Планировщик может построить цепочку действий с минимальной стоимостью для достижения цели или провести верификацию какого то утверждения, таким образом для обычных игр Instead мы могли бы проводить верификацию проходимости ещё до запуска игры, а идеале этот же движок и должен реализовывать проверки,а не ручной код. Производительность труда для создания обычных игр должна существенно повыситься, т.к. это даже не конечный автомат, не система вывода вроде Пролога или CLIPS, а следующий уровень - планировщик, который позволяет связывать довольно общие определения, паршивенькая но модель левого полушария мозга :-)

SVMDXIU2LNH4KK4AUQGP

Re: Вопросы генерации сюжета машиной Peter to XSet

>> В общем, на мой взгляд, симуляция -- не улучшает сюжет или мысль произведения. Она немного "прячет" рельсы, но это похоже на обман.

XSet> А я думаю у неё такой функции и нет, чтобы улучшать сюжет и литературность или что то делать с рельсами, я думаю это просто другой жанр.

Согласен. Можно так сказать. Вот, кстати, еще пример: http://www.storyteller-game.com/

Может, натолкнет на размышления. В моей классификации это что-то ближе к системе с уменьшенными степенями свободы.

GTHGYTJFQCO2QTTQ5VA6

Re: Вопросы генерации сюжета машиной XSet to Peter

> В общем, на мой взгляд, симуляция -- не улучшает сюжет или мысль произведения. Она немного "прячет" рельсы, но это похоже на обман.

А я думаю у неё такой функции и нет, чтобы улучшать сюжет и литературность или что то делать с рельсами, я думаю это просто другой жанр. Точно также как игры не являются книгами, а интерактивная литература не является аркадами, стрелялками и т.п. - игры с симуляцией - это особый вид искусства причём междисциплинарного, тут и литература и программирование и инженерия знаний. Думается и для них должна быть ниша. Кому то нравится жёсткий но хорошо прописанный сюжет, а кто то хочет наоборот повышенной интерактивности мира даже ценой утери его литературной составляющей. Пробовать песочницы - это тоже интересно. Не надо ничего "променивать", пускай расцветают тысячи цветов, нельзя же силой все усадить писать игры в одном жанре в одном стиле и т.п. Лично меня необычность Карантина потрясла, это было что то новое, как бы рассказ "Стой кто идёт" в интерактивной форме. Было бы скучно, если бы игр и кино не было, а был бы один исходный рассказ.

CYBGBN4TWA6RRHXTMXZR

Re: Вопросы генерации сюжета машиной XSet to Peter

Да. Синтез вышел бы забавный. Пошёл спасать кота, а в итоге выбрался из туалета :-)

ZLYLADKLGQV4AYULO6BO

Re: Вопросы генерации сюжета машиной Peter to XSet

XSet> Хотя вы так смачно описали генерацию сюжета, что и это интересно было бы попробовать. Я бы не сказал, что существующие в репозитории игры (кроме портированных) сильно разнообразны сюжетами.

Ну, пиши, посмотрим что выйдет. :)

ZCMPC74MDYVSW63GY5K4

Re: Вопросы генерации сюжета машиной Peter to XSet

XSet> Да всё правильно написали, это очень сложная или скорее объемная задача. Поэтому не надо пытаться генерировать литературу машиной, надо поверх некого общего сюжета и продуманных персонажей впихнуть хорошую вариативность, которая таки будет сильно ограничена степенями свободы сюжета и прочих вещей. Такой подход уже опробован в различных играх и он оправдывает себя.

Вопрос в том, чего хочется от игры/книги. Например.

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

Так что, вероятно, то, что для тебя недостаток -- для меня достоинство. Мне нравятся рельсы в квестах. :) Да, это одноразовые игры. Как и одноразовые книги :) Хотя, хорошие книги можно перечитывать. Отсутутвие рельс переводит игру в другой жанр, который мне уже не так интересен.Это детали, которые никак не углубляют само произведение. Мне интересны загадки в том виде, в каком их придумал автор. Мне нравится что сюжет конкретен как в книге... Когда я пробую песочницу на прочность, все-таки, это уже нечто другое. Фактически, это становится игрой -- исследуй законы, которые создал автор. Это тоже интересная игра, конечно, но это ближе к стратегии. К шахматам. Некий другой жанр.

В общем, на мой взгляд, симуляция -- не улучшает сюжет или мысль произведения. Она немного "прячет" рельсы, но это похоже на обман.

Так что я точно не против таких экспериментов, я просто хочу сказать, что это не сильно влияет на содержательную часть истории.

Но повторюсь, пишу просто в рамках обмена мнением. Не более.

UKPCGHU4RRH6CQUH6MWR

Re: Вопросы генерации сюжета машиной XSet to Peter

Хотя вы так смачно описали генерацию сюжета, что и это интересно было бы попробовать. Я бы не сказал, что существующие в репозитории игры (кроме портированных) сильно разнообразны сюжетами. Учитывая что для определённого жанра игр не требуется красочное литературное описание, быть может "электронный распорядитель игр" сможет внести в досуг много интересных загогулин, генерируя разные части сюжета и персонажи к ним. Сочинение произведения - это творчество, но ведь оно обязано подчиняться определённым законам и требованиям, 3-4 актная структура и т.п. :-) Если иерархически представить себе конструкцию из мельчайших действий до целых актов "экспозиция", "завязка", "поворот", "кульминация", "развязка" и т.п. то высокая вариативность может быть перерастёт в качество. Это не будет роман, сочинённый машиной, это будет игра, в которую можно играть то так то этак. Конечно это сложнее того, что я первоначально описывал. Думается начать надо с внедрения "вариативных персонажей" в более менее стабильный сюжет. Для примера берём "квантового кота" и реализуем все действия на основе честного добровольного выбора действий, расширяем набор возможностей, глубину персонажей. С каждым проигрышем игрок будет находить что то новое, какой то новый слой, который он до этого не видел. Ну в общем свой "Мир дикого запада" с блекджеком и прочими :-)

CQP3NJK456Z5O424PA3S

Re: Вопросы генерации сюжета машиной XSet to Peter

Да всё правильно написали, это очень сложная или скорее объемная задача. Поэтому не надо пытаться генерировать литературу машиной, надо поверх некого общего сюжета и продуманных персонажей впихнуть хорошую вариативность, которая таки будет сильно ограничена степенями свободы сюжета и прочих вещей. Такой подход уже опробован в различных играх и он оправдывает себя. В какой то мере можно привести тот же Fallout, там вроде открытый мир, но мы всё равно в лапах сюжета. Мне лишь хотелось бы чтобы с персонажами можно было более подробно общаться, а то они часто вообще не знают где находятся, даже дорогу не спросить (такая ситуация была в игре "Трудно быть богом").

I7XE2HYL5A7INFD2E6FU

Вопросы генерации сюжета машиной Peter to All

При обсуждении идей игр на INSTEAD, часто затрагиваются вопросы вариативности/свободы в подобных играх. В том плане, что если запрограммировать NPC, дать больше свободы игроку, то может получиться что-то интересное... На мой взгляд эти вопросы тесно связаны с более общим вопросом: принципиальной возможности машинного творчества (возможности создания такой иллюзии). Решил описать некоторые мысленные эксперименты, о которых думал раньше. :)

Преамбула. Вероятно, люди ищут разное от игр/книг. Я понял, что часто идет подмена понятий о ценности произведения. В качестве примера приведу шахматы. Сами по себе шахматы это просто игра. Это не произведение. Это свод правил, которые можно оценивать рационально-логически, но сами эти правила не влияют на внутренний мир человека. Но когда люди играют в шахматы -- возникает "диалог" между игроками -- они общаются на языке шахмат. И в каком то смысле, идет воздействие игроков друг на друга.

Так вот, мне не интересны шахматы сами по себе, мне всегда интересен сам диалог. В книге и в классическом квесте - это диалог с автором. Даже если он кому-то не заметен, он есть. Поэтому в данном тексте, я рассматриваю возможность симулировать творчество машиной. Можно ли написать такую игру, в которую даже самому автору будет интересно играть, но это будут не шахматы (не просто свод правил)?

Представим себе, что мы хотим написать программу -- художника. Которая нарисует нам пару новых шедевров и мы с удовольствием рассмотрим их. :)

Картина -- это произведение. То-есть -- что то новое. То, что сам автор программы не ожидал увидеть. Как этого добиться? Компьютеры не создают информацию, они могут ее только обрабатывать.

Я могу написать формулу фрактала, и программа нарисует мне картинку. Но я уже нарисовал ее, введя формулу фрактала. Я просто получаю то, что ожидал увидеть (как автор программы). Это не творчество. Хотя тут есть возможнось использования компьютера, как инструмента для творчества. Но это несколько другая тема.

Хорошо, упростим задачу. Пусть все картинки, что рисует программа -- это растровые изображения. Начнем с мелких разрешений и только 2 цвета - черный и белый.

Итак, размер холста: 1x1. Хорошая новость: программа способна нарисовать все возможные картины и таковых картин будет две. Черная точка и белая точка. Правда, сказать что такая картина "красива" или нет мы не очень то можем -- обе слишком примитивны. С другой стороны, просто точка -- это тоже концептуально. А отсутствие точки, можно сказать -- отсутствие картины. :) Итого -- из 2х картин одна может считаться "нормальной".

Хорошо, перейдем на 2x2. Тут будет уже 16 картин. Часть из которых, условно интересные. Например, "уголок", диагональ, квадрат. Часть картин повторяют друг друга -- просто они симметрично отражены, например. Или повернуты.

Повышая размер холста, скажем, до 8x8 -- мы можем сказать, что программа способна создать все возможные картины на этом холсте, простым перебором. Таких "картин" будет 2 ^ 64.

8x8 это уже тот размер, в котором будут прикольные монохромные иконки, и, скажем, полный алфавит русских букв. :) Да вообще, много чего там будет! Все, что сможем уместить в 8x8.

Но мы замечаем, что с ростом размера холста, доля "интересных" картин сокращается. Если на холсте 2x2 мы сразу можем выбрать "интересные" нано-картинки, то на холсте 8x8 нам и жизни не хватит, чтобы выбрать "интересные" вещи. Кроме того, сам перебор на больших холстах, также начинает съедать время и объем диска (на хранение картинок).

Можно пойти дальше, и сказать, что для заполнения крупных холстов, мы используем датчик случайных чисел. А для оценки "качества" картинки -- придется написать "функцию красоты".

"Функция красоты" -- такая функция, которая отбраковывает плохие, неинтересные картинки, и оставляет хорошие, создавая иллюзию творчества. Очевидно, что функция красоты должна быть антропной -- то-есть в ней должны быть заложены функции субъекта и понятия о красоте.

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

Когда мы переходим на уровень изображений, которые действительно способны стать искусством (изображение 128x128 хотя бы) и воздействовать на нас, мы сталкиваемся с тем, что функция качества, превращается в нас самих.

В качестве практического примера, я писал игру на SDL, где все персонажи генерировались похожим образом. Монстрики и прочие существа, конструировались из сгенерированных фрагментов, с попыткой использования принципов симметрии. Получалось забавно, но только на небольших разрешениях. Еще один пример "практического" использования -- генерация лабиринтов, в которых есть симметрия и некоторые другие категории "красоты".

Конечно, все что я написал -- самоочевидные вещи, я решил написать эти соображения чтобы показать следующее:

- попытки написать алгоритмы, которые бы давали интересные сюжеты (интересные -- это значит дающие хотя бы соизмеримые со средней литературой воздействие на читателя) -- сродни попыткам написания искусственного сознания;
- симуляция компьютерного творчества гораздо проще в системах с маленькими степенями свободы, и именно в эту сторону я периодически смотрю;
- игры - симуляции (типа rpg или песочниц) -- интересны тем, кто не ищет глубокой беседы с автором. Им достаточно интеллектуального разглядывания камушков на морском берегу.

Простите за словоблудие. :)

PBECJNDROM2567CCCQJG

Antokolos Peter to All

Нам нужен instead-ng 3.0.0! :)

SHXFMPJTY6YI6H5AAOUP

INSTEAD 3.0.0 Peter to All

Привет, друзья! С радость сообщаю о выходе нового INSTEAD 3.0! Этот выпуск готовился целый год, и для него бессмысленно писать список изменений, ведь новое в нем – практически все. В этой версии появился совершенно новый стек STEAD3, который уже успели оценить авторы игр. В нем учтен весь многолетний опыт предыдущего стека, который теперь называется STEAD2, и он также включен в INSTEAD. Так что все старые игры по прежнему работают! Документация по новому стеку написана и включена в релиз. Читайте, пробуйте, творите! Среди других изменений:

- переписана C часть, теперь INSTEAD стал модульным;
- в исходный код включен пример минимального интерпретатора (100 строк);
- графические возможности расширены за счет подсистемы pixels;
- звуковые возможности расширены за счет возможности генерировать звук из кода;
- исправлено множество ошибок.

Бинарные сборки будут появляться по мере их готовности.

Кроме того, в этот раз одновременно с выходом INSTEAD 3 выходят несколько новых игр, которые написаны с помощью нового движка! Встречайте:

- ПРОВОДНИК: http://instead-games.ru/game.php?ID=247
- ИНСТЕДОЗ 5: http://instead-games.ru/game.php?ID=252
- ИНЖЕНЕР: http://instead-games.ru/game.php?ID=248

И это еще не все! Журнал ПРИНТЕД поменял свой формат, и теперь доступен здесь: http://printed.syscall.ru

Вы думали новости закончились? Нет! Добро пожаловать в только что открывшийся: КЛУБ INSTEAD: http://club.syscall.ru

Спасибо и до новых встреч! :)

IBO7VAHA2DQF7EQQWA3F

Понимание комикса Peter to All

true-grue опубликовал небольшую заметку на полях ПРИНТЕДА:
http://printed.syscall.ru/post/ponimanie-komiksa

WYRJOVAFXVQXJASXIU6Y

true-grue закончил перевод интересной статьи Peter to All

Статья Рона Гилберта.

Рон Ги́лберт — американский разработчик игр, программист и продюсер, работавший над серией квестов компании LucasArts, один из разработчиков игрового движка SCUMM.

http://printed.syscall.ru/post/12-pravil-dlya-igr-priklyuchenij-ot-rona-gilberta

56K3VGRVJ22ZPKMAXX7W

Re: 12 правил для игр-приключений от Рона Гилберта Ромеро to Ромеро

блин, не туда ответил - это про Леночку

5CNJ7A7JRAT4A5C7FS66

Re: 12 правил для игр-приключений от Рона Гилберта Ромеро to Peter

эх, мы в глубоком детстве тоже игры на бейчике писали :) правда, мы файтинг писали про членов нашего двора, как мы друг друга круто мочим :)

BUQM5ZNKRTT4CBPMM76Q

12 правил для игр-приключений от Рона Гилберта Peter to All

А пока вы тут настраиваете idec софт, true-grue перевел статью: 12 правил для игр-приключений от Рона Гилберта

Читать на новом принтеде ;)

http://printed.syscall.ru/post/12-pravil-dlya-igr-priklyuchenij-ot-rona-gilberta

UCU63D5PV27FAMJAHN2H

Что такое инстед? Peter to All

Так как часто возникают вопросы, а что такое собственно INSTEAD, выкладываю подборку *исторических* статей:

Как все начиналось: http://instead.syscall.ru/ru/2010/05/09/history/
Обзор INSTEAD 1.2.0: http://instead.syscall.ru/ru//2010/09/12/instead-1-2-0-review/
Ответ на одно письмо: https://instead.syscall.ru/wiki/ru/gamedev/quickstart
Что такое метапарсер?: https://instead.syscall.ru/wiki/ru/gamedev/modules/metaparser/article
Выпуски printed: http://printed.syscall.ru/

Напомню, что скоро грядет INSTEAD 3 - который по большей части переписан.
Про STEAD3 мы записали подкаст: http://instead.syscall.ru/podcasts/podcast_05.ogg
Другие подкасты тут: http://instead.syscall.ru/ru/about/

Кому интересно, почитайте. :)

J43VYFZFIUH6JP2LKJFW