Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 18.04.2012, 15:38   #1
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Скриптовик - Банки или текст?

Недавно начал разработку небольшого скриптовика. И тут возник вопрос - что лучше использовать для хранения данных - строку или банк?
В плане удобства разработки конечно удобна строка. Но банк, на сколько мне известно, на порядок ее шустрее.
Вопрос не столько в наличии плюсов и минусов, сколько в целесообразности использования их для описания игровых ситуаций. Ведь не вся игра на нем будет строиться, а только геймплей и некоторые элементы интерфейса.
Замеченные плюсы и минусы:
Строка:
+Строка может хранить весь скрипт в первозданном виде скомпилированный код.
-Строка обрабатывается дольше.
Банк
+Переходы в банке от одного участка скомпилированного кода к другому быстрее.
-Много геморроя при разработке. Трудно искать баги.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 16:38   #2
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Скриптовик - Банки или текст?

ответ на твой вопрос: банки лучше.
ответ на нужность скриптового языка в Blitz3D - нет.
если очень-очень хочется - Randomize давал ссылку на интеграцию Lua с Blitz3D
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Gector (18.04.2012)
Старый 18.04.2012, 16:46   #3
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Скриптовик - Банки или текст?

Сообщение от ffinder Посмотреть сообщение
ответ на твой вопрос: банки лучше.
ответ на нужность скриптового языка в Blitz3D - нет.
если очень-очень хочется - Randomize давал ссылку на интеграцию Lua с Blitz3D
В Blitz3d то может он и не нужен). Но вот для игры бы не помешал).
Игра которая на нем будет строиться - небольшая адвенчура с рпг элементами. Нужен для создания событий и всего прочего.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Старый 18.04.2012, 17:50   #4
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Скриптовик - Банки или текст?

Напиши его лучше на c#.
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 18:15   #5
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Скриптовик - Банки или текст?

Сообщение от radiobutton Посмотреть сообщение
Напиши его лучше на c#.
Слово "целесообразность" вообще что обозначает тогда?)
1) Мне нужен он нужен для игры на блице. Если бы я умел на шарпе работать, я эту тему создал бы в другой ветке, и она бы звучала как "подскажите скриптовик", так как на шарпе куда больше решений чем на б3д.
2) На шарпе можно писать под юнити.
Но нужен он на блице.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 18:22   #6
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Скриптовик - Банки или текст?

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

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

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

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

Как все настоящие программисты знают, единственной полезной структурой данных является массив. Строки, списки, структуры и наборы — это все разновидности массивов и их можно рассматривать как массивы без усложнения вашего языка программирования.
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 18:32   #7
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Скриптовик - Банки или текст?

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

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

Скомпилированная на твоем языке программа будит висеть в оперативной памяти в виде целочисленного массива.
Сам код скриптов будит писаться в виде текста.
Целочисленные массивы и ассемблер на блице? Осталось только попробовать одеть штаны пинцетом...
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
L.D.M.T. (18.04.2012)
Старый 18.04.2012, 18:58   #8
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Скриптовик - Банки или текст?

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

смотри

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

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
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 19:09   #9
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Скриптовик - Банки или текст?

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

смотри

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

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
Во расписал то . Кстати говоря примерно таким был предыдущий вариант компилирующий все в байт-код. НО! Скрипты в этом случае очень ограничены и не могут никак взаимодействовать. Либо пиши один большой файл, либо компилируй все разом и в строгой очередности, что ну совсем никак не катит. Да и при работе с текстовыми переменными будут большие проблемы.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 19:16   #10
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Скриптовик - Банки или текст?

Сообщение от Gector Посмотреть сообщение
Во расписал то . Кстати говоря примерно таким был предыдущий вариант компилирующий все в байт-код. НО! Скрипты в этом случае очень ограничены и не могут никак взаимодействовать. Либо пиши один большой файл, либо компилируй все разом и в строгой очередности, что ну совсем никак не катит. Да и при работе с текстовыми переменными будут большие проблемы.
0 3 72 101 108 108 111 32 87 111 114 108 100 0

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

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

пишешь несколько модулей. и по порядку их компилиш. ну типа того.
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 19:30   #11
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Скриптовик - Банки или текст?

Сообщение от radiobutton Посмотреть сообщение
0 3 72 101 108 108 111 32 87 111 114 108 100 0

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

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

пишешь несколько модулей. и по порядку их компилиш. ну типа того.
Из одного скрипта нельзя получить данные с другого если скрипт уже переведен в байты. Так как в качестве имени используется порядковый номер то при переводе в байты он не имеет представления о том какой номер у переменной в другом скрипте. Поэтому никак не катит. Все равно нужно уникальное имя для переменной. Тогда просто пропадает суть всей экономии если байтовый код все равно ищет переменные по именам. При том это еще и нагружает его исполнение, так как имена в сущности обрабатываются тем же способом, что и в тексте только путем чтения байтов.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 20:08   #12
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Скриптовик - Банки или текст?

Сообщение от Gector Посмотреть сообщение
Из одного скрипта нельзя получить данные с другого если скрипт уже переведен в байты.
Что ты представляеш под получением данных со скрипта из другого скрипта.
И что для тебя такое скрипт.

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


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


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


Операции со строками будут производиться всего один раз. При компиляции кода скрипта, при загрузке игры.
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 20:14   #13
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Скриптовик - Банки или текст?

Помню когда-то скачивал Blitz Virtual Machine, но что-то не могу найти сейчас. компилировала код блица в байт код и выполняла...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 18.04.2012, 20:16   #14
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Скриптовик - Банки или текст?

виртуальные машины кстати выдумывать очень весело.
ну, по-гиковски, конечно, весело.
можно придумать любую архитектуру процессора и писать на этом чудном асме код.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ffinder за это полезное сообщение:
Gector (18.04.2012), St_AnGer (18.04.2012)
Старый 18.04.2012, 20:18   #15
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Скриптовик - Банки или текст?

Сообщение от pax Посмотреть сообщение
Помню когда-то скачивал Blitz Virtual Machine, но что-то не могу найти сейчас. компилировала код блица в байт код и выполняла...
Он нынче коммерческий вроде.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com