IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Загрузка карт, вспомогательные ф-ции..
Sha/|/|an
сообщение 23.1.2005, 23:39
Сообщение #1


Digital Mystery
***

Группа: Пользователи
Сообщений: 1887
Регистрация: 1.9.2004
Пользователь №: 8



Вобщем решил заделиться функциями, упрощающими загрузку карт и скриптов.

1). Читалка параметров. В ДБ, чтобы было удобно и редактировать в блокноте и можно было загрузить приходится писать каждый параметр в отдельно строке. Это не очень удобно, например когда надо создать 10 врагов по 8 параметро на кадого. Получается 80 строк. Поэтому я придумал 2 фукнции, которые позволяют загружать параметры вот такого вида:

объект (параметр1,параметр2,параметр3)

Код
` чтение числового параметра
Function nRead(String$, ID)
tmp$ = "": _openParam = 0: _tParam = 0
If ID <> 0
  For q=1 to len(String$)
     If _openParam = 1
        If mid$(String$, q) = ")" then exitFunction val(tmp$)
        If _tParam = ID then tmp$ = tmp$ + mid$(String$, q)
        If mid$(String$, q) = "," then _tParam = _tParam + 1
     EndIf
     If mid$(String$, q) = "(" then _openParam = 1: _tParam = 1
  Next q
EndIf
EndFunction val(tmp$)

` чтение строкового параметра
Function nRead$(String$, ID)
tmp$ = "": _openParam = 0: _tParam = 0
If ID = 0
  For q=1 to len(String$)
     If mid$(String$, q) = " " then ExitFunction tmp$
     tmp$ = tmp$ + mid$(String$, q)
  Next q
Else
  For q=1 to len(String$)
     If _openParam = 1
        If mid$(String$, q) = ")" then exitFunction tmp$
        If mid$(String$, q) = "," then _tParam = _tParam + 1: GoTo nxt002
        If _tParam = ID then tmp$ = tmp$ + mid$(String$, q)
     EndIf
     If mid$(String$, q) = "(" then _openParam = 1: _tParam = 1
     nxt002:
  Next q
EndIf
EndFunction tmp$

Вобщем в функцию надо передать строку (ее получить можно с помощью read string file_num, string$) и порядковый номер параметра. В строковую функцию можно передать 0-й номер параметра, тогда она возвратит название объекта (функции, события, метода...). Короче выглядит это вот так:

string$ = "camera_pos (24,50,-13.5)"
nRead(string$, 1) = 24
nRead(string$, 2) = 50
nRead(string$, 3) = -13.5
nRead$(string$, 0) = "camera_pos"

С помощью этого легко можно поставить камеру в нужную точку. Это удобно для, например, скриптов.

Вот еще пример, со строками:

string$ = "ambient_prop (sky.jpg,5000,5000,230,230,245)"
nRead$(string$, 0) = "ambient_prop"
nRead$(string$, 1) = "sky.jpg"
nRead(string$, 2) = 5000


2). Создание файла из height map'a. Как я выяснил команда point(x,y) в ДБК томрозит. Поэтому загрузка матрицы размера 40х40 может затянуться чекунд на 10. Если читать высоты из файла, то карта загрузится где-то за секунду.

Код
` создание файла с картой высот
Function MakeHMapFile(MapName$, map_sizeX, map_sizeZ, cf#)
Open to write 2, MapName$+".dat"
Load bitmap MapName$+".bmp"
Set current bitmap 1
mn# = (768 / 2) * cf#
For q=0 to map_sizeX
  For w=0 to map_sizeZ
     t = point(q,w)
     hg# = (rgbr(t)+rgbg(t)+rgbb(t))/3.0
     hg# = hg#*cf#
     Write float 2, hg#-mn#
  Next w
Next q
Set current bitmap 0
Delete bitmap 1
Close file 2
EndFunction


С этой функцией все понятно. При cf# = 1, максимальный перепад высот на матрице - 768. MapName$ передается без расширения. Загрузить эту матрицу можно будет вот так:

Код
` загрузка матрицы
Function LoadLevel(MapName$, map_sizeX, map_sizeZ, map_tileX#, map_tileZ#)
make matrix 1, map_sizeX*map_tileX#, map_sizeZ*map_tileZ#, map_sizeX, map_sizeZ
Open to read 2, MapName$+".dat"
For q=0 to map_sizeX
  For w=0 to map_sizeZ
     Read float 2, hg#
     Set matrix height 1, w,q,hg#
  Next w
Next q
Update matrix 1
Close file 2
EndFunction


map_sizeX и map_sizeZ - кол-во тайлов по осям. В предущей ф-ции тоже.

p.s. Функции переделывал при создании темы и не проверял их. Могут быть баги.


--------------------
exclusive reality for you...
Перейти в начало страницы
 
+Цитировать сообщение
Sha/|/|an
сообщение 20.2.2005, 1:25
Сообщение #2


Digital Mystery
***

Группа: Пользователи
Сообщений: 1887
Регистрация: 1.9.2004
Пользователь №: 8



45 просмотров и ни одного ответа!! Удивительно! Неужели никто и не посмотрел? А зря.. Я вот например на основе первых 2-х функций сделал скриптовый язык. Пока он очень мал, но уже позволяет сделать простеньких ботов. Вот пример кода на нем:
Код
rotate (180)
speed (0.05)
while (pl_dist$, >, 15)
wend
if (sync$, =, left)
  srotate (0.0, -3.0)
else
  srotate (0.0, 3.0)
endif
script_end

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

Помните автотекстурирование из MagicWorld'a? Вроде еще ни в одной проге не было подобного. А я сделал функцию, которая по картинке создает плавную карту. Т.е.. она сама устанавливает необходимые тайлы так, чтобы получился плавный переход текстур. Для 2-х текстурной матрицы надо текстуру 4х4.

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

Нужно красивое, анимированное меню в 200 строк? Лежит под носом библа для создания такого, даже пример есть. Так ведь только один человек ее начал использовать! Остальные - влосипед изобретать..

Melanholy прав, форум стал каким-то консервативным, чтобы кто-то чего-то посмотрел или уж тем более стал использовать в своих проектах... А ведь такие любопытные функции мимо вас проходят...


--------------------
exclusive reality for you...
Перейти в начало страницы
 
+Цитировать сообщение
Sir Lesro
сообщение 20.2.2005, 12:17
Сообщение #3


Активный участник
***

Группа: Пользователи
Сообщений: 89
Регистрация: 15.11.2004
Из: Калмыкия, Элиста
Пользователь №: 131



Очень интересно. Но я не понял каких ответов ты ждешь? Все довольно граммотно, добавить почти и нечего..


--------------------
Программа делает то, что вы приказали ей сделать, а не то, что вы хотели, чтобы она сделала.
"Третий закон Грира"
Перейти в начало страницы
 
+Цитировать сообщение
versus
сообщение 20.2.2005, 12:22
Сообщение #4


Digital Mystery
***

Группа: Пользователи
Сообщений: 802
Регистрация: 1.9.2004
Из: Санкт-Петербург
Пользователь №: 9



Чувак! Да ты крут. :-) Без шуток...


--------------------
:: exclusive reality for you ::

фрОМ раШа виЗ пАнк
Перейти в начало страницы
 
+Цитировать сообщение
ФайвеР
сообщение 20.2.2005, 15:21
Сообщение #5


Активный участник
***

Группа: Пользователи
Сообщений: 57
Регистрация: 18.9.2004
Пользователь №: 64



Цитата(Sha/|/|an @ Feb 20 2005, 01:25 AM)
Помните автотекстурирование из MagicWorld'a? Вроде еще ни в одной проге не было подобного. А я сделал функцию, которая по картинке создает плавную карту. Т.е.. она сама устанавливает необходимые тайлы так, чтобы получился плавный переход текстур. Для 2-х текстурной матрицы надо текстуру 4х4.

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

Нужно красивое, анимированное меню в 200 строк? Лежит под носом библа для создания такого, даже пример есть. Так ведь только один человек ее начал использовать! Остальные - влосипед изобретать...
*

Конечно нужно smile.gif
Я, например, как-раз собрался консоль делать... поэтому было бы очень интересно посмотреть.


--------------------
Одни мы над миром владыки,
Нам зверь подчиняется дикий
И травы зеленых полей...

Тарловский.
Иронический сад
Перейти в начало страницы
 
+Цитировать сообщение
Kolyanoid
сообщение 20.2.2005, 15:49
Сообщение #6


. . .-= SPK Games =-. . . Модератор v3.2 alpha . . Linuxoid v0.5
***

Группа: Администраторы
Сообщений: 3521
Регистрация: 1.9.2004
Из: Москва
Пользователь №: 15



Ну вот видишь, Шаман - не всё так тухло как кажется smile.gif

Только вот я люблю велосипеды изобретать smile.gif Это мне в кайф smile.gif Поетому и не юзаю почти ничего чужого в своих проектах, но думаю мне скоро придётся отказаться от этой идеи... Работа над моим проекутом кипит, с каждым днём медия всё ближе и ближе... Меню тоже smile.gif Но если алавар не одобрит, то фиг с этим всем smile.gif


--------------------
Мои координаты:
  • Jabber: kolyanoid@jabber.ru
  • Почта: kolyanoid [at] mail333.com
  • Вконтакте: id64896
«Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен». (Альберт Эйнштейн)
Перейти в начало страницы
 
+Цитировать сообщение
Sefirot
сообщение 20.2.2005, 15:58
Сообщение #7


/!\ инквизитор /!\
***

Группа: Пользователи
Сообщений: 1769
Регистрация: 1.9.2004
Из: Мидгар
Пользователь №: 13



Щас ляпну философию насчет того что не все люди пользуются всякими полезными функциями которые дает народ:
Это потому что у нас аудитория разделена пополам. Первая половина - опытные, вторая - чайники. Вот первой половине это не надо, потому что они напишут сами, а вторая не может понять для чего это надо biggrin.gif


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
Sha/|/|an
сообщение 20.2.2005, 16:29
Сообщение #8


Digital Mystery
***

Группа: Пользователи
Сообщений: 1887
Регистрация: 1.9.2004
Пользователь №: 8



Цитата
Очень интересно. Но я не понял каких ответов ты ждешь? Все довольно граммотно, добавить почти и нечего..

Ну типа "а как это использовать?" laugh.gif

Цитата
Чувак! Да ты крут. :-) Без шуток...

Непонял.. Это что шутка? biggrin.gif

Цитата
Конечно нужно
Я, например, как-раз собрался консоль делать... поэтому было бы очень интересно посмотреть.

О! Наконец-то кто-от нашелся.. Ладно, прикручу нормальные коменты и выложу.

Цитата
Только вот я люблю велосипеды изобретать  Это мне в кайф

Мне не очень в кайф, но я без дела сидеть не могу. Придумаю какую-нидь фигню и давай делать. smile.gif

Цитата
Щас ляпну философию насчет того что не все люди пользуются всякими полезными функциями которые дает народ:

Вот это верно.

Вот собрался улучшать 3Дспрайт, т.к. хочу его юзать в проектах своих. Сделаю поддержку списков и слайдеров. Кому надо? biggrin.gif


--------------------
exclusive reality for you...
Перейти в начало страницы
 
+Цитировать сообщение
Kolyanoid
сообщение 20.2.2005, 18:07
Сообщение #9


. . .-= SPK Games =-. . . Модератор v3.2 alpha . . Linuxoid v0.5
***

Группа: Администраторы
Сообщений: 3521
Регистрация: 1.9.2004
Из: Москва
Пользователь №: 15



Цитата
Вот собрался улучшать 3Дспрайт, т.к. хочу его юзать в проектах своих. Сделаю поддержку списков и слайдеров. Кому надо?

Мне нада smile.gif


--------------------
Мои координаты:
  • Jabber: kolyanoid@jabber.ru
  • Почта: kolyanoid [at] mail333.com
  • Вконтакте: id64896
«Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен». (Альберт Эйнштейн)
Перейти в начало страницы
 
+Цитировать сообщение
ФайвеР
сообщение 20.2.2005, 18:23
Сообщение #10


Активный участник
***

Группа: Пользователи
Сообщений: 57
Регистрация: 18.9.2004
Пользователь №: 64



Цитата(Sefirot @ Feb 20 2005, 03:58 PM)
Первая половина - опытные, вторая - чайники. Вот первой половине это не надо, потому что они напишут сами
*

Но и посмотреть как другие делают тоже стоит smile.gif
Многие вещи можно сделать по-разному... Кто-то лучше, кто-то хуже.
Увидев чужие примеры, можно и свои наработки усовершенствовать


--------------------
Одни мы над миром владыки,
Нам зверь подчиняется дикий
И травы зеленых полей...

Тарловский.
Иронический сад
Перейти в начало страницы
 
+Цитировать сообщение
Sha/|/|an
сообщение 20.2.2005, 21:15
Сообщение #11


Digital Mystery
***

Группа: Пользователи
Сообщений: 1887
Регистрация: 1.9.2004
Пользователь №: 8



Цитата
Мне нада

Ну вот и хорошо! smile.gif Значит будет 3Dsprite для SPK! smile.gif Только я слайдеры собираюсь делать не совсем стандартные.. smile.gif Ну для шаровар нормально.

Цитата
Но и посмотреть как другие делают тоже стоит
Многие вещи можно сделать по-разному... Кто-то лучше, кто-то хуже.
Увидев чужие примеры, можно и свои наработки усовершенствовать

Можно. Но обычно лень. biggrin.gif


--------------------
exclusive reality for you...
Перейти в начало страницы
 
+Цитировать сообщение
Sir Lesro
сообщение 1.3.2005, 11:46
Сообщение #12


Активный участник
***

Группа: Пользователи
Сообщений: 89
Регистрация: 15.11.2004
Из: Калмыкия, Элиста
Пользователь №: 131



Sha/|/|an
Филосовские размышления
А зачем тебе все это? Неужели ты думаешь, что люди которые занимаются разработкой игр(проектов) не смогут сделать что-то подобное... Может чайникам пригодиться, но не думаю что они смогут использовать энто.


--------------------
Программа делает то, что вы приказали ей сделать, а не то, что вы хотели, чтобы она сделала.
"Третий закон Грира"
Перейти в начало страницы
 
+Цитировать сообщение
Sha/|/|an
сообщение 1.3.2005, 22:43
Сообщение #13


Digital Mystery
***

Группа: Пользователи
Сообщений: 1887
Регистрация: 1.9.2004
Пользователь №: 8



Цитата
Sha/|/|an
Филосовские размышления
А зачем тебе все это? Неужели ты думаешь, что люди которые занимаются разработкой игр(проектов) не смогут сделать что-то подобное... Может чайникам пригодиться, но не думаю что они смогут использовать энто.

А я что, заставляю использовать? Я что, делаю для кого-то? Ты меня просто не понял. Все эти библиотеки я делаю для себя. biggrin.gif Но я не жадный, поэтому выкладываю их на форуме. Да и новички поучатся.

Например 3Дспрайт я начал делать для своей игры, т.к. нужно было простое и удобное создание интерфейса. Вот сейчас я его переписываю с нуля. Проверяю некоторые функции. Например совсем недавно я удалил из него целый блок по выводу текста из плашек. Щас делаю че-то вроде ProgressBar'a. Просто не вижу смысла делать куждый раз все заного для новой программы. Потому и сделал 3Дспрайт, который легко можно подключить к любому проекту. Вот конкретно сейчас я делаю его Про-версию под Дбпро. А делаю я его для того, чтобы начать делать игру.

Скрипт я тоже делал для себя. Мне было интересно попробовать поделать скроллер. Я сделал для этого простенький скрипт, который позволяет программировать поведение врагов.

Тоже самое и с функциями для чтения параметров из строк (я ее и сейчас использую в том же виде, что и на форуме лежит), хейтмапами, автотекстрированием.. Все делал для себя.

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


--------------------
exclusive reality for you...
Перейти в начало страницы
 
+Цитировать сообщение
UnDead_13
сообщение 7.3.2005, 14:35
Сообщение #14


Активный участник
***

Группа: Пользователи
Сообщений: 255
Регистрация: 20.10.2004
Пользователь №: 108



Цитата
Например 3Дспрайт я начал делать для своей игры, т.к. нужно было простое и удобное создание интерфейса. Вот сейчас я его переписываю с нуля. Проверяю некоторые функции. Например совсем недавно я удалил из него целый блок по выводу текста из плашек. Щас делаю че-то вроде ProgressBar'a. Просто не вижу смысла делать куждый раз все заного для новой программы. Потому и сделал 3Дспрайт, который легко можно подключить к любому проекту. Вот конкретно сейчас я делаю его Про-версию под Дбпро. А делаю я его для того, чтобы начать делать игру.

Уже сделал новый 3dsprite?
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 24.11.2017, 17:49
 X 
Ссылки на работы форумчан:
1. Cайт по использованию 3D технологий
в образовании

2. 15 Defense. Underwater Battle

3. GlaZ в Steam Greenlight