МОДЕЛЬ СЕТИ
на игре «ОБЛАВА», 2004

1. Теория модели

В этой модели я попытался связать воедино все аспекты работы с Сетью и свести их к одному знаменателю. Модель реализуется прямым взаимодействием игрока и мастера, т.е. на словах. (Однако под неё подведена далеко не простая база.)

Модель сети напрямую завязана на модель экономики и модель медицинских имплантантов.


2. Исполнение модели

2.1. СЕТЬ (из Приложения А. Сеть)

Сеть имеет сложную внутреннюю структуру. Существуют служебные и пользовательские уровни. Выход на пользовательский уровень - через виртуальный шлем в любом игровом центре. Выход на служебные уровни - только через профессиональный разъём (модели 1Ц29, 1Ч29, 2Ц28, 1ЦЦ1).


2.1.1. Структура сети

Нижний уровень - матрица, байтовая информация (подразумевается исходная кодировка на основе двоичного кода - 16-ричная, а также менее распространённых кодировок 8-ричной, 64-ричной, и 10-ричной.) Манипуляции в этом слое осуществляются внесением изменений непосредственно в исходный код. Ситуация осложняется тем, что для большей части исходного кода требуется декомпиляция и дешифровка.

Средний уровень - объектный слой. Манипуляции в этом слое упрощены благодаря объектному интерфейсу. Это основной рабочий слой. Незаконные (в основном) манипуляции в этом слое осуществляются программами-взломщиками.

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

Верхний уровень - пользовательский слой. Слой вывода результатов пользовательских программ. Используется для пользовательской работы с данными, а также для размещения интерактивных виртуальных игр.


2.1.2. Службы сети

Защищённая передача данных с одного адреса на другой осуществляется через матрицу. Каналы передачи данных пользовательского слоя не шифруются, данные передаются в открытом виде. В объектном слое передача данных легко засекается.

Работу программ, изменения в сетевых хранилищах информации возможно отследить в оперативном слое. Но это практически нереально.


2.1.3. Программы

Все программы так или иначе отображаются в объектном слое.

Интересующие БКФ-овцев программы подразделяются на классы:

  • Лёд. Активные защитные программы.
  • Ледорубы. Активные атакующие программы.
  • Град. Пассивные защитные программы слежения.
  • Шторм. Пассивные защитные программы контрудара.
  • Боевые вирусы. Пассивные атакующие программы.
  • Информационные ресурсы. Сетевые информационные массивы, базы данных, списки, листы.
  • Все остальные программы.

Активные программы засекаются немедленно, в момент активации, и немедленно выполняют свою задачу - зачастую грубо и напролом (всё зависит от поставленного ТЗ и способностей разработчика).

Пассивные программы засекаются по уже произведённому эффекту. Защитные пассивные программы обычно отслеживают данные атакующего; самые дорогие программы - защитные пассивные программы контрудара, которые отслеживают адрес атакующего и, применяя либо встроенный «ледоруб», либо «боевой вирус», наносят ответный удар по нападающему. Атакующие пассивные программы, т.н. «боевые вирусы» воздействуют либо на защитный «лёд», либо на сам защищённый объект, в обход «льда».


2.1.4. Последствия

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

Если разница в уровне между атакующей и защитной (и наоборот) программами составляет несколько порядков, то возможно полное уничтожение более слабой программы. Кроме того, вполне возможно, что будет повреждено и оборудование, с которым была связана уничтоженная программа. Так, выйдет из строя процессор, сопроцессор, калькулятор, сгорит системное устройство и прочее подобное страшное.

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


2.2. ДЕЙСТВИЯ В СЕТИ

Определена дифференциация действий на разных слоя сети. Как частный случай - идёт разделение по доступу.

Пользовательский слой предназначен для пользовательской работы с данными (в т.ч. почта), для интерактивных виртуальных игр, для просмотра "фильмов" и разных передач.

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

Объектный слой - для служебного пользования специалистов, связанных с сетью (сетевые программисты). Это основной рабочий слой, взаимодействие со слоем и воздействие на него осуществляется при помощи специальных программ. Кроме того, слой имеет 3D объектный интерфейс. Незаконные (в основном) манипуляции в этом слое осуществляются программами-взломщиками.

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


2.3. НАПИСАНИЕ ПРОГРАММ (из Приложения А. Сеть)

Может ли господь бог написать программу, которую он не сможет отладить?

Безошибочный кодировщик, вZYск SYSтем Lав. МемвеR, мIсн.

2.3.0. Описание языка программирования низкого уровня "Л2":

2.3.0.1. Основы синтаксиса

Оператор начинается с ключа-диеза (#) и является последовательностью цифр (имеет смысл значность оператора). Цифровой оператор может содержать аргумент. Нецифровые операторы передаются синтаксическими символами.


2.3.0.2. Синтаксические операторы

+ оператор сложения
- оператор вычитания
/ оператор деления
\ оператор деления нацело
* оператор умножения
= оператор присваивания
( разделительный оператор
)
--- оператор комментирования строки
` оператор аргумента
'text' маркер текста (парный)

2.3.0.2. Диезные операторы

2.3.0.2.1. Константы (односимвольные операторы)
#1 TRUE (истина)
#0 FALSE (ложь)
#2…#9 случайная константа, которую можно задать в пределах программы/подпрограммы

2.3.0.2.2. Предлоги (двухсимвольные операторы)
#01 FOR (в течение)
#02 AND (и)
#07 OR (или)
#10 THEN (тогда)
#11 TO (то)
#17 IF (если)
#44 WHILE (пока)

2.3.0.2.3. Маркеры (трёхсимвольные операторы)

#000…#099 ACTION MARKER (маркер действия)
#100…#999 STRING MARKER (маркер строки)
Маркер с аргументом
#100`1 начало строки 100
#100`0 конец строки 100
#100`10 первый символ строки 100
#100`00 последний символ строки 100
#100`10`n первые n символов строки 100
#100`00`n последние n символов строки 100
#100`11 первый символ позиции 100
#100`01 последний символ позиции 100
#100`11`n первые n символов позиции 100
#100`01`n первые n символов позиции 100

«Строка 100»: строка, имеющая уникальный номер 100. Обычно - первая строка. «Позиция 100»: 100-я строка по счёту. Аргумент позиции в основном используется для возвращения номера строки.


2.3.0.2.4. Системные операторы (четырёхсимвольные операторы)
#0804 RUN PROGRAM FILE (запустить внешнюю программу)
#0548`number CALL SUB PROGRAM`number (вызвать подпрограмму)
#0548`number`url CALL SUB PROGRAM`number`url (вызвать подпрограмму, находящуюся по адресу url)
#0811`name`url OPEN FILE`name`url (открыть файл с именем «name» по адресу url)
#1010`number`x`y`z CREATE MASSIVE (создать массив с именем «number» и количеством элементов матрицы x, y, z )
#1011`number`x`y CREATE DATA BASE (создать базу данных с именем «number» и количеством элементов матрицы x, y)
#1111`number`x CREATE LIST (создать список с именем «number» и количеством элементов списка x)
#1112`number SUB PROGRAM`number (объявление подпрограммы с именем «number»)
#2199 TIME (HOUR/MIN/SEC) (время)
#2200 DATE (DAY/MONTH/YEAR) (дата)
#3105`name`url CLOSE FILE`name`url (закрыть файл с именем «name» по адресу url)
#3534`name`url CREATE`name`url (создать файл с именем «name» по адресу url)
#5151`name`url SAVE FILE`name`url (сохранить файл с именем «name» по адресу url)
#5152`name`url SAVE AS FILE`name`url (сохранить файл под именем «name» по адресу url)
#6134`name`url CLEAR FILE`name`url (удалить содержимое файла с именем «name» по адресу url)
#6144`name`url DELETE FILE`name`url (удалить файл с именем «name» по адресу url)

2.3.0.2.5. Файловые операторы (пятисимвольные операторы)
#11400`#marker FIND`#marker (найти маркер)
#11400`'text' FIND`'text' (найти 'текст')
#11500`#marker GOTO`#marker (перейти к маркеру)
#44444 BR (перейти на следующую строку)
#81114`'text' DELETE`'text' (удалить 'текст')
#81114`#m`1 DELETE`#m`1 (удалить строку m)
#81114`#m`10 DELETE`#m`10 (удалить первый символ строки m)
#81114`#m`00 DELETE`#m`00 (удалить последний символ строки m)
#81114`#m`10`n DELETE`#m`10`n (удалить первые n символов строки m)
#81114`#m`00`n DELETE`#m`00`n (удалить последние n символов строки m)
#81114`#m`11 DELETE`#m`11 (удалить строку с позицией m)
#81114`#m`01 DELETE`#m`01 (удалить последний символ позиции m)
#81114`#m`11`n DELETE`#m`11`n (удалить первые n символов позиции m)
#81114`#m`01`n DELETE`#m`01`n (удалить последние n символов позиции m)
#87114`'text' WRITE`'text' (записать 'text')
#87145`'text' WRITE REPLACE`'text' (записать 'text', заменяя исходный текст целиком)

2.3.0.3. Конструкции

#306080`77114 объявление языка программирования
#600674740 начало программы
#632063206 конец программы
#45101010='specificator' запись спецификатора программы (выполняется компилятором - обычно на строке 102)
#600605480 начало подпрограммы
#632005480 конец подпрограммы
#01…#10 #49 FOR…TO NEXT (цикл for…to)
#40…#70 DO…LOOP (цикл do…loop)
#40…#70 #44`action DO…LOOP WHILE`action (цикл do…loop while)
#17…#11(…#42)(…#43)…#77 IF…THEN(…ELSE)(…ELSEIF)…END IF (цикл if…end if)

2.3.0.4. Общие принципы написания программы

Каждая строка маркируется (трёхсимвольный диезный маркер). Маркер действия не является маркером строки, поэтому выставляется отдельно. Первый маркер строки программы может быть любым, но обычно это маркер #100 и далее по строкам по порядку: #101, #102, #103 и т. д. Таким образом, листинг программы не может превышать 899 строк (одна строка 128 символов); но частично можно обойти этот запрет вызовом внешних подпрограмм и внешних исполняемых программ.

Программа может обращаться к подпрограммам (sub program) и функциям (function) через оператор #0548. Если это внешние подпрограммы, то указывается сетевой адрес. Если это внутренние подпрограммы, то текст их должен быть описан внутри самой программы после основного теста программы; оператор объявления подпрограммы #1112.

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

В первой строке программы объявляется язык программирования Л2: #306080`77114. Вторая оставляется свободной, так как именно сюда компилятор впишет уникальный спецификатор программы. Например, вторая строка программы может выглядеть так: #45101010='ледоруб Att. 2'. И только с третьей строки начинается непосредственно код программы.

Любой текст в программе, будь то название или адрес, пишется в одинарных кавычках ''. Имя массива, базы банных, списка, файла, подпрограммы может быть как символьным, так и числовым.

Пустая строка, если она не маркирована, компилятором не воспринимается, и он сообщает об ошибке.


2.3.0.5. Пример программы

#100 #306080`77114
#101 #45101010=''
#102 #1 ---константа=1
#103 #0811`'711\База4\1062.dxlp' ---открыть файл 1062.dxlp
#104 #17 #622`10='#' #11 #3105`'711\База4\1062.dxlp'
#105 ---если первый символ строки 622 диез, то закрыть файл
#106 #42 #11500`#622 #87145='#' #0
#107 ---иначе пишем первый символ строки 622 как диез
#108 ---константа=0
#109 #3534`'711\Результат\результат.dat' ----создаём файл
#110 #17 #1 #11 #87144`'да'
#111 ---если константа=1, пишем да
#112 #42 #87144`'нет' ---иначе пишем нет
#113 #77 ---конец условного цикла
#114 #5151`'711\Результат\результат.dat' ---сохраняем файл
#115 #3105`'711\Результат\результат.dat' ---закрываем файл
#116 #17 #1 #11 #3105`'711\База4\1062.dxlp'
#117 ---если константа=1 закрываем файл 1062.dxlp
#118 #42 #5151`'711\База4\1062.dxlp' ---иначе сохраняем
#119 #3105`'711\База4\1062.dxlp' ---закрываем файл 1062.dxlp
#120 #77 ---конец условного цикла
#121 #632063206

Та же программа без комментариев выглядит вот так:

#100 #306080`77114
#101 #45101010=''
#102 #1
#103 #0811`'711\База4\1062.dxlp'
#104 #17 #622`10='#' #11 #3105`'711\База4\1062.dxlp'
#105 #42 #11500`#622 #87145='#' #0
#106 #3534`'711\Результат\результат.dat'
#107 #17 #1 #11 #87144`'да'
#108 #42 #87144`'нет'
#109 #77
#110 #5151`'711\Результат\результат.dat'
#111 #3105`'711\Результат\результат.dat'
#112 #17 #1 #11 #3105`'711\База4\1062.dxlp'
#113 #42 #5151`'711\База4\1062.dxlp'
#114 #3105`'711\База4\1062.dxlp'
#115 #77
#116 #632063206

2.3.0.6. Шаблоны

2.3.0.6.1. Шаблон программы
#100 #306080`77114
#101 #45101010=''
#102 ---текст программы
...
#999 #632063206

п. 0.6.2. Шаблон подпрограммы в тексте программы
#100 #306080`77114
#101 #45101010=''
#102 ---текст программы
...
#800 #600605480
#801 #1112`number ---объявление подпрограммы 'number'
#802 ---текст подпрограммы
...
#998 #632005480
#999 #632063206

2.4. ЖЕЛЕЗО (из Приложения А. Сеть, из служебного приложения Внутренние имплантанты)

Сетевой разъём 1Ц29. Позволяет выходить в объектный слой сети, а, через него, на оперативный слой и матрицу. Основное устройство, без которого выход на т. н. служебные слои сети невозможен.

Программный сопроцессор ТР04Ф. Управляет вызовом сетевых ресурсов, хранит в оперативной памяти один сетевой модуль, список, базу данных или массив. Устройство расширения, используемое в основном «сетевиками» - сетевыми программистами и, иногда, БКФ-овцами. В оперативную память сопроцессора с сетевого адреса загружается программа/модуль/массив/база/список; считается, что этот объект по-прежнему находится в сети, но скорость доступа к нему во много раз больше, кроме того, если этот объект в сети будет удалён/перемещён/переименован/заблокирован, то к нему всё равно можно будет обращаться, так как он находится в оперативной памяти сопроцессора.

Сетевой разъём стандартен, все его версии унифицированы, существуют модификации 1Ц29, 1Ч29, 2Ц28, 1ЦЦ1.

Программные сопроцессоры серии ТР-Ф выпускаются с 1-й (ТР01Ф) по 17-ю (ТР17Ф) модели, все они разработаны под разные функции, имеют разные характеристики и обладают разными возможностями. Программный сопроцессор ТР17Ф только разработан, его характеристики и функции неизвестны. В открытой продаже имеются устаревшие образцы пятилетней-десятилетней давности - до 12-й модели (эту модель достать сложно). Модели, начиная с ТР13Ф, стоят на вооружении подразделений БКФ МО СССР.

Существуют игровые пользовательские сопроцессоры, улучшающие характеристики персонажа в игровой ВР. Игровые пользовательские сопроцессоры серии Х-ЦФ выпус-каются с 1-й (Х01ЦФ) по 94-ю (Х94ЦФ) модели.

Существуют боевые сопроцессоры (серии и модели неизвестны). Все данные по ним закрыты. Стоят на вооружении спецподразделений БКФ МО СССР.


Название Операция по установке Эффект
Сетевой разъём 1Ц29 40 мин Возможность выходить в объектный слой сети, а, через него, на оперативный слой и матрицу.
Игровой сопроцессор Х78ЦФ 10 мин Более быстрая реакция в игровой ВР (пользовательский слой).
Жёсткий диск «Келдыш-1ЖС» 30 мин Встроенный жёсткий диск. Объём 1 Гб.
Жёсткий диск «Келдыш-5ЖС» 30 мин Встроенный жёсткий диск. Объём 5 Гб.
Программный сопроцессор ТР12Ф 15 мин Управляет вызовом сетевых ресурсов, хранит в оперативной памяти до четырёх сетевых модулей, до трёх списков, до двух баз данных или одного массива.
Программный сопроцессор ТР16Ф 10 мин Обсчитывает объекты оперативного слоя сети.

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


3. Авторы


Теория модели ©Илья Стёпин
©2004 год.



Hosted by uCoz