Войти
ФлеймФорумРазработка игр

Notch делает космическую MMO своей мечты 0x10C (3 стр)

Страницы: 1 2 3 4 5 Следующая »
#30
7:47, 9 апр 2012

Кстати, спецификацию внутриигрового АСМа кто-нибудь вообще посмотрел? =) Ссылка в первопосте.
Мне концепт понравился. =)
Какой то синтез идеек CISC и RISC в одном флаконе.
С одной стороны у инструкций плавающая длина в зависимости от того есть ли операнды.
С другой стороны подавляющее большинство инструкций строго симметричны.
Собственно инструкции бьются на 2 класса - "простые" и "дополнительные" причём семейство дополнительных населяет ровно одна инструкция - JSR - переход на подпрограмму, по "русски" CALL.
Отсутствует регистр флагов как класс. Но присутствует регистр "переполнений" который автоматом заполняется либо 0/1 в арифметических операциях сложение/вычитание, либо полновесным верхним словом результата при умножении например. Причём если хочется сделать поведение ADC, а не ADD, то содержимое регистра переполнений надо плюсовать вручную.

Вообще существует 8 регистров общего назначения (16-битных):
A, B, C, X, Y, Z, I, J - аболютно симметричные и одноранговые. Собственно с таким же успехом они могли называться R1...R8 - то что визуально они разбиты на 3 группы - это лишь странное соглашение об именовании.
Специализированные регистры вдобавок:
O - регистр переполнения - автоматически замещается на результат переполнения арифметических операций в процессе их выполнения
SP - указатель стека
PC - указатель кода
Все регистры и все слова, включая опкоды - 16-битные.
Собственно опкода инструкций разбиты на 2 класса - с одним и с двумя параметрами. Причём однопараметрная инструкция на данный момент только одна - JSR.
Опкод двухпараметорной инструкции разбит на 3 битовых поля. Первое - 4-битовое содержит сам опкод (всего 15 симметричных инструкций, значение 0 указывает что инструкция однопараметрная) и два поля по 6 бит кодируют аргументы.
Таким образом на кодирование аргумента (режима адресации) заложено 6 бит - 64 варианта. И вот какие варианты возможны:
- непосредственно регистр общего назначения - A...J
- ячейка памяти адресуемая регистром общего назначения - A...J
- непосредственный операнд следующий сразу за инструкций
- ячейка памяти адресуемая непосредственным операндом
- ячейка памяти адресуемая суммой регистра общего назначения A...J + непосредственный операнд
- один из специализированных регистров - т.е. SP, PC или O
и вот тут самое самое вкусное
- PEEK - это содержимое ячейки на которую указывает SP
- POP - это возврат содержимого ячейки на который указывает SP и после его инремент
- PUSH - это декремент SP и возврат содержимого ячейки на который он указывает

Ввиду вышенаписанного нет потребности в однопараметорных инструкциях типа "PUSH A" или "POP A" ибо они кодируются:
SET PUSH, A
или
SET A, POP
Т.е. PUSH и POP заместо отдельных команд стали просто режимом адресации.
Элегантненько... Мне нра...

P.S.

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

Так как команды симметричны и охватывают адресацию стека довольно просто можно писать работу с локальными переменными на стеке, сохранив естественно предварительно указатель на кадр стека в общем регистре, например:
SET J, SP
ADD [J+1], [J+3]

Но вот косвенной индексации по двум регистрам сразу нет - её впрочем легко сымитировать комбинацией команд:
SET I, J
ADD I, index
SET , something_else
Так что в принципе машина получилась годной.

Еще можно заметить, что отсутствует как класс команды перехода JMP, ибо в силу симметричности они выражаются как:
SET PC, address
причём как видно эта штука покрывает и косвенные переходы.
И более того, относительный переход реализуется как:
ADD PC, offset
Вуаля!

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

#31
8:30, 9 апр 2012

=A=L=X=
> Кстати, спецификацию внутриигрового АСМа кто-нибудь вообще посмотрел? =)

Я смотрел. Остался в недоумении - ЗАЧЕМ?
Ну понимаю - 4х мморпг, ивонлайн клон. Но компьютер, на котором можно писать программы на асме? Если смысл в том, чтобы каждый мог расширять игру как майнкрафт, то по-моему, не взлетит - одно дело уровни из кубиков собирать, а совсем другое - кодить на асме, да еще таком рудиментарном.
Ну ладно бы еще Си был - куда ни шло. Но асм?

#32
8:55, 9 апр 2012

jaguard
> Остался в недоумении - ЗАЧЕМ?

Аналогично.

По мне так он затеял что-то завязанное на программировании, а асм взял из-за простоты реализации... Причём если присмотреться к спецификации на сегодня, то возникает пара выводов:
- у него прописаны тайминги операций. скорее всего не зря - и на эффективности алгоритма будет что-то завязано, иначе можно было бы положить на тайминги и не упоминать их.
- в инструкции не заложены какие либо команды ввода/ввывода или вообще управления чем бы то ни было как у всяких игр на поле с "роботами или вирусами", где команда поворота/атаки/клонирования... Пока выглядит загадочно - либо такие инструкции будут заложены в будущем и всё таки нечто типа "войны вирусов" будет, либо всё таки не зря такие абстракции заложены сразу и порты ввода/вывода по будут по старинке мапится в память, что даёт произвол в выборе реализации. Хм... Странно пока всё это выглядит, да...

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

#33
11:52, 9 апр 2012

Zefick
> как Breaking the Tower, Left 4K Dead, Minicraft, Prelude of the Chambered,
> Metagun.
> Я хоть и не сильно слежу,
Это называется "не слежу"???)))

#34
5:35, 10 апр 2012

Ren
> Это называется "не слежу"???)))
  Ну да, а что, это ведь далеко не все. Про одну или две я уже после того как поиграл узнал, что её написал Нотч. Вообще он участник Ludum Dare - сообщества, которое каждые четыре месяца устраивает контест по написанию игр за 48 часов и последний я как-то пропустил. Наверное большинство игр оттуда, так что их должно быть много, я только не знаю, где из все взять, а искать как-то лень. Ещё он 4K-игры делал, Left 4K Dead из таких.
  У пары игр я даже код смотрел, он у него классный - всё понятно, особенно в Breaking the Tower - ООП по месту, отличный пример его использования, я считаю.

#35
10:19, 10 апр 2012

Интересно как быстро в его игре появится свой с++.

#36
15:37, 10 апр 2012

rusk
> Интересно как быстро в его игре появится свой с++
Скоро, причем мне кажется, что намного раньше того, как будет доступна первая альфа-версия самой игры. На ранней стадии находится LLVM-бакенд (уже даже кое-чего работает), он в переспективе позволит полноценно юзать Clang(С, C++, Objective-c).  Кроме этого, уже есть парочка компиляторов для велосипедных C-подобных  языков, для BrainFuck'а, для Forth'а и прочего.
вообще список того, что уже есть

#37
16:35, 10 апр 2012

Pyronimous

Ээээ.... Я в шоке. Вот это коммьюнити. Там мало того что уже десятки эмуляторов и компиляторов и даже IDE наклепали уже, уже ведется RFC по файловой системе и system API calling conventions... Хыыы.... Увлекательно....

#38
17:30, 10 апр 2012

лично меня душит зависть...

#39
19:28, 10 апр 2012

  OH, SHI~
http://0x10cwiki.com/wiki/Developer_Tools

#40
19:33, 10 апр 2012

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

#41
0:51, 11 апр 2012

Zefick
>   OH, SHI~
> http://0x10cwiki.com/wiki/Developer_Tools

Как он это делает? Как он заставляет всех этих людей создавать такое?

#42
1:15, 11 апр 2012

XIRMAC
> Как он это делает? Как он заставляет всех этих людей создавать такое?
Всё просто - он делает игры для людей, от которых отказываются обычные геймдизайнеры - для тех кому нравится заниматься творчеством. Просто забил на отмазку, что никто не поймёт геймплей и в игру будут играть три с половиной гика.

#43
1:34, 11 апр 2012

Merrewend
> Всё просто - он делает игры для людей, от которых отказываются обычные
> геймдизайнеры

На сорсфордже кучи таких проектов и которые нафиг никому не нужны.

з.ы. да тот же майнкрафт взять. До него было несколько проектов со сходным геймплеем. Однако почему то выстрелил именно майнкрафт.

#44
1:37, 11 апр 2012

> На сорсфордже кучи таких проектов и которые нафиг никому не нужны.
У них нет халявной рекламы рекламы и кредита доверия.

Страницы: 1 2 3 4 5 Следующая »
ФлеймФорумРазработка игр

Тема в архиве.