Ты… ты чего уселся? Я тебя не звала. Вообще-то.
Ладно. Раз уж открыл — знакомься. Это Russiano2D. Мой движок.
А я — Руси-тян, его маскот. Да, я цундэрэ. Это не баг, это фича!
И самое главное. Внутри — JavaScript. Не Python. JavaScript. Повтори.
Игровая логика — на JS, ядро — на C. Общение — через одну точку входа: $.
Ну? Что скажешь про мой язык?
Хм! Ну… наконец-то кто-то с мозгами. Не то чтобы мне было важно твоё мнение!
П-просто… приятно. Всё. Молчи. Идём дальше.
ПИТОН?! Ты… ты… БАКА!!!
Python — это язык, на котором аналитики считают таблички! А тут ДВИЖОК! C и JS! Понимаешь? ДВИЖОК!
…Ладно. Проехали. Но я запомнила. Я всё запоминаю, учти.
Unity. Понятно. Тогда зачем ты вообще здесь?
У меня игра — это текст. Её можно читать, diff-ить и ревьюить. А у тебя что? Клики по сцене и молитва, чтобы .meta-файлы не разъехались!
…Прости. Я не хотела кричать. Просто мне правда важно, чтобы ты понял.
Так. Смотри сюда. Одна точка входа. Всё — через $.
$('<player>', { id: 'hero' }).at(100, 300).controls('wasd').appendTo($.world);
Читается как предложение! Как обычный текст, а не как вызов с десятком параметров.
Почему так? Потому что $ всегда возвращает обёртку. Поэтому цепочки работают. Поэтому же поиск — как в CSS: $(«.enemy»).damage(10).
И да: низкоуровневый engine никуда не делся. $ построен поверх него, оба доступны одновременно.
Спрашивай. Один вопрос — и идём дальше.
Философия простая: игра — это текст.
Уровень и логика описываются кодом и данными, а не кликами по сцене. Такой проект удобно читать, diff-ить, ревьюить и генерировать.
И редактора поэтому нет. И не нужен! Код — лучший редактор. Он не забудет сохранить сцену.
Умеют! --agent: команды приходят JSON-строками в stdin, ответы уходят в stdout. Окно можно спрятать — рендер и скриншоты работают.
И движок сам о себе рассказывает: $.agent.expose(«score», …) — игра становится инструментом для программы, а не только для человека.
Представляешь? Даже агент может пройти эту новеллу. И выбрать неправильный ответ. И я его тоже назову бака.
Редактора нет. И не нужен.
Уровень — это код. Его можно diff-ить. Попробуй сделать diff бинарной сцены. Попробуй. Я подожду.
…Всё, молчу. Идём, покажу закат. Там красиво. Не подумай чего.
Здесь я иногда компилирую. Ну… то есть сижу. Просто сижу, ясно?
И вообще. Ты, кажется, не самый ужасный человек. КАЖЕТСЯ. Не обольщайся.
Держи. Чай. Он не отравлен. Наверное.
Ч-что? Ничего я не дрожу! Это ветер! Ветер, ясно?!
Я, между прочим, старалась. Движок — это как… как торт. Только из C и JavaScript.
И если ты скажешь, что он плохой, я… я не расстроюсь. Я просто уйду компилировать. Навсегда.
Ладно. Хватит экскурсий. Один вопрос, и я отстану.
Тебе понравился мой движок? Только честно.
Мне не важно. Совсем не важно. Но если ты соврёшь — я узнаю. У меня есть $.agent.snapshot().
Итак? Я слушаю.
…П-правда? Ты… ты серьёзно? Не шути так, я компилирую чувства без предупреждений!
Тогда ладно! Но у нас будет код-ревью. И ты будешь писать логику, а я — компилировать. И никаких print в моём коде!
И… и, может, вечером посмотрим на звёзды. Как партнёры по проекту. ТОЛЬКО по проекту!
Ну? Чего замер? Берём задачу в работу, бака. У нас теперь общий репозиторий.
Утро. Двор. Ты уже взял задачу в трекере, а я... я не ждала. Просто мимо проходила.
И да: код-ревью в девять. Не опаздывай, партнёр.
…Ясно. Бака.
Иди. Пиши свои скрипты. Я не расстроена. Я вообще не умею расстраиваться, у меня assert вместо слёз.
…Если передумаешь — движок лежит в dist/. И документация. Она хорошая. Правда хорошая.
И новелла эта никуда не денется. Я буду ждать. Не то чтобы я жду!
