forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Скриптовик - Банки или текст? (http://forum.boolean.name/showthread.php?t=16661)

Gector 18.04.2012 15:38

Скриптовик - Банки или текст?
 
Недавно начал разработку небольшого скриптовика. И тут возник вопрос - что лучше использовать для хранения данных - строку или банк?
В плане удобства разработки конечно удобна строка. Но банк, на сколько мне известно, на порядок ее шустрее.
Вопрос не столько в наличии плюсов и минусов, сколько в целесообразности использования их для описания игровых ситуаций. Ведь не вся игра на нем будет строиться, а только геймплей и некоторые элементы интерфейса.
Замеченные плюсы и минусы:
Строка:
+Строка может хранить весь скрипт в первозданном виде скомпилированный код.
-Строка обрабатывается дольше.
Банк
+Переходы в банке от одного участка скомпилированного кода к другому быстрее.
-Много геморроя при разработке. Трудно искать баги.

ffinder 18.04.2012 16:38

Ответ: Скриптовик - Банки или текст?
 
ответ на твой вопрос: банки лучше.
ответ на нужность скриптового языка в Blitz3D - нет.
если очень-очень хочется - Randomize давал ссылку на интеграцию Lua с Blitz3D

Gector 18.04.2012 16:46

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от ffinder (Сообщение 225810)
ответ на твой вопрос: банки лучше.
ответ на нужность скриптового языка в Blitz3D - нет.
если очень-очень хочется - Randomize давал ссылку на интеграцию Lua с Blitz3D

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

radiobutton 18.04.2012 17:50

Ответ: Скриптовик - Банки или текст?
 
Напиши его лучше на c#.

Gector 18.04.2012 18:15

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от radiobutton (Сообщение 225824)
Напиши его лучше на c#.

Слово "целесообразность" вообще что обозначает тогда?)
1) Мне нужен он нужен для игры на блице. Если бы я умел на шарпе работать, я эту тему создал бы в другой ветке, и она бы звучала как "подскажите скриптовик", так как на шарпе куда больше решений чем на б3д.
2) На шарпе можно писать под юнити.
Но нужен он на блице.

radiobutton 18.04.2012 18:22

Ответ: Скриптовик - Банки или текст?
 
Тогда используй целочисленные массивы.
Получится что-то вроде ассемблера.

Почувствуешь себя на некоторое время настоящим програмистом.

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

Еще можно использовать битовый массив. Будит вообще самый быстрый вариант.

Цитата:

Как все настоящие программисты знают, единственной полезной структурой данных является массив. Строки, списки, структуры и наборы — это все разновидности массивов и их можно рассматривать как массивы без усложнения вашего языка программирования.

Gector 18.04.2012 18:32

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от radiobutton (Сообщение 225828)
Тогда используй целочисленные массивы.
Получится что-то вроде ассемблера.

Почувствуешь себя на некоторое время настоящим програмистом.

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

Целочисленные массивы и ассемблер на блице? Осталось только попробовать одеть штаны пинцетом...

radiobutton 18.04.2012 18:58

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от Gector (Сообщение 225829)
Целочисленные массивы и ассемблер на блице? Осталось только попробовать одеть штаны пинцетом...

Что-то вроде ассемблера, а не ассемблер)

смотри

делаеш набор операций, функций, итд и нумеруеш их

0) ноль означает что в следующей за ним ячейке массива будит тип переменной, а за типом будит следовать значение. И после значения еще один ноль. Хотя он нужен только для строк и нецелых чисел, ведь значения целых чисел можно уместить в одну ячейку.
(1 - int, 2 - float, 3 - string)
1) +
2) -
3) *
4) /
5) равно
6) неравно
7) больше
8 ) меньше
9) присвоить
10) (
11) )
итд
51) if
52) then
53) else
54) endif
итд
100) moveto(x,y)
101) OpenDialog(x); x - номер нпц.

1001) Переменная один целая (для примера название будит "a")
1002) Переменная два целая (для примера название будит "b")
1003) Переменная три целая (для примера название будит "c")
итд

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

Например строка массива:

51 10 1001 1 1002 11 3 1003 7 0 1 15 52 100 0 1 23423 0 1 72346 9 1001 10 1001 1 0 1 2 11 53 9 1001 10 1001 1 0 1 1 11 54

будит означать следующий скрипт:

Код:

if (a+b)*c>15 then
  moveto(23423,72346)
  a:=(a+2) ; Звездные войны на паскале писать можно. Ты же пишешь звездные войны?
else
  a:=(a+1)
endif


Gector 18.04.2012 19:09

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от radiobutton (Сообщение 225830)
Что-то вроде ассемблера, а не ассемблер)

смотри

делаеш набор операций, функций, итд и нумеруеш их

0) ноль означает что в следующей за ним ячейке массива будит тип переменной, а за типом будит следовать значение. И после значения еще один ноль. Хотя он нужен только для строк и нецелых чисел, ведь значения целых чисел можно уместить в одну ячейку.
(1 - int, 2 - float, 3 - string)
1) +
2) -
3) *
4) /
5) равно
6) неравно
7) больше
8 ) меньше
9) присвоить
10) (
11) )
итд
51) if
52) then
53) else
54) endif
итд
100) moveto(x,y)
101) OpenDialog(x); x - номер нпц.

1001) Переменная один целая (для примера название будит "a")
1002) Переменная два целая (для примера название будит "b")
1003) Переменная три целая (для примера название будит "c")
итд

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

Например строка массива:

51 10 1001 1 1002 11 3 1003 7 0 1 15 52 100 0 1 23423 0 1 72346 9 1001 10 1001 1 0 1 2 11 53 9 1001 10 1001 1 0 1 1 11 54

будит означать следующий скрипт:

Код:

if (a+b)*c>15 then
  moveto(23423,72346)
  a:=(a+2) ; Звездные войны на паскале писать можно. Ты же пишешь звездные войны?
else
  a:=(a+1)
endif


Во расписал то :super: . Кстати говоря примерно таким был предыдущий вариант компилирующий все в байт-код. НО! Скрипты в этом случае очень ограничены и не могут никак взаимодействовать. Либо пиши один большой файл, либо компилируй все разом и в строгой очередности, что ну совсем никак не катит. Да и при работе с текстовыми переменными будут большие проблемы.

radiobutton 18.04.2012 19:16

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от Gector (Сообщение 225831)
Во расписал то :super: . Кстати говоря примерно таким был предыдущий вариант компилирующий все в байт-код. НО! Скрипты в этом случае очень ограничены и не могут никак взаимодействовать. Либо пиши один большой файл, либо компилируй все разом и в строгой очередности, что ну совсем никак не катит. Да и при работе с текстовыми переменными будут большие проблемы.

0 3 72 101 108 108 111 32 87 111 114 108 100 0

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

Почему скрипты ограничены и не могут никак взаимодействовать?
Настоящие програмисты не бояца использовать goto.:)

пишешь несколько модулей. и по порядку их компилиш. ну типа того.

Gector 18.04.2012 19:30

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от radiobutton (Сообщение 225833)
0 3 72 101 108 108 111 32 87 111 114 108 100 0

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

Почему скрипты ограничены и не могут никак взаимодействовать?
Настоящие програмисты не бояца использовать goto.:)

пишешь несколько модулей. и по порядку их компилиш. ну типа того.

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

radiobutton 18.04.2012 20:08

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от Gector (Сообщение 225834)
Из одного скрипта нельзя получить данные с другого если скрипт уже переведен в байты.

Что ты представляеш под получением данных со скрипта из другого скрипта.
И что для тебя такое скрипт.

Цитата:

Так как в качестве имени используется порядковый номер то при переводе в байты он не имеет представления о том какой номер у переменной в другом скрипте.
Массив с переменными единый. Глобальные переменные. Если ты решиш создать пространство имен, то для таких переменных добавить еще один флаг, где прописано к какому пространству имен она отновится. Получать доступ из одного пространства имен к другому как бы нельзя, ибо это так задумано.) Для общих переменных есть глобальное пространство имен.


Цитата:

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


Цитата:

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


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

pax 18.04.2012 20:14

Ответ: Скриптовик - Банки или текст?
 
Помню когда-то скачивал Blitz Virtual Machine, но что-то не могу найти сейчас. компилировала код блица в байт код и выполняла...

ffinder 18.04.2012 20:16

Ответ: Скриптовик - Банки или текст?
 
виртуальные машины кстати выдумывать очень весело.
ну, по-гиковски, конечно, весело.
можно придумать любую архитектуру процессора и писать на этом чудном асме код.

Gector 18.04.2012 20:18

Ответ: Скриптовик - Банки или текст?
 
Цитата:

Сообщение от pax (Сообщение 225841)
Помню когда-то скачивал Blitz Virtual Machine, но что-то не могу найти сейчас. компилировала код блица в байт код и выполняла...

Он нынче коммерческий вроде.


Часовой пояс GMT +4, время: 22:07.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot