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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 20.04.2012, 15:52   #31
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Внедрение стартого меню

Вот ещё вопрос есть: когда мне нужно сделать паузу, я останавливаю обработку процессов, выключая Update-ы, а когда продолжаю игру, то все враги и аптечки по своему состоянию(убит-жив, собран-не собран) остаются прежними, а если я загружаю другое место игры, то как мне отследить состояния, чтобы выгрузить их в игру?
(Offline)
 
Ответить с цитированием
Старый 20.04.2012, 16:19   #32
Wegox
Бывалый
 
Аватар для Wegox
 
Регистрация: 17.12.2011
Сообщений: 862
Написано 443 полезных сообщений
(для 1,133 пользователей)
Ответ: Внедрение стартого меню

Ну, составь список, всего того, что должно учитываться при загрузки левела, из которого уходишь и сохрани в файл, например или в банк или в массив или в тип, потом загрузи когда возвращаться будешь, да это всё просто, сложно игру сделать!
(Offline)
 
Ответить с цитированием
Старый 20.04.2012, 16:36   #33
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Внедрение стартого меню

Это-то понятно, я вот пример почитал, переменные сохранять могу:
http://forum.boolean.name/showthread.php?t=1014
Дело в другом: у меня тип с врагами, и нужно сохранить, каких именно я убил, а каких - нет
(Offline)
 
Ответить с цитированием
Старый 20.04.2012, 16:47   #34
Wegox
Бывалый
 
Аватар для Wegox
 
Регистрация: 17.12.2011
Сообщений: 862
Написано 443 полезных сообщений
(для 1,133 пользователей)
Ответ: Внедрение стартого меню

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

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

При старте проверяй что-то вроде if not б\блабла="бот который" делете б, я не помню как там на блитзе.

Ну да тут смотря чего больше мёртвых ботов или живых, это уже оптимизация, тут думай сам каких сохранять, но в любом случае, сохранять нужно, либо живых либо мёртвых в зависимости от дальнейший загрузки!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (20.04.2012)
Старый 20.04.2012, 18:12   #35
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Внедрение стартого меню

Я предлагаю забыть о сохранении состояния уровня, хранить только номер уровня: если игрок не прошёл уровень, то ничего страшного, заново начнет.
А потом когда-нибудь доработаешь.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (20.04.2012)
Старый 20.04.2012, 19:41   #36
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Внедрение стартого меню

Думаю, что это неплохая идея, учитывая, что это первый проект

Последний раз редактировалось Devilox, 20.04.2012 в 23:32.
(Offline)
 
Ответить с цитированием
Старый 23.04.2012, 22:33   #37
reumep
Знающий
 
Аватар для reumep
 
Регистрация: 04.11.2011
Сообщений: 285
Написано 66 полезных сообщений
(для 159 пользователей)
Ответ: Внедрение стартого меню

Сообщение от Жека Посмотреть сообщение
Я предлагаю забыть о сохранении состояния уровня, хранить только номер уровня: если игрок не прошёл уровень, то ничего страшного, заново начнет.
А потом когда-нибудь доработаешь.
ну да, проходит игрок суперсложный уровень, с десятой попытки получилось, почти добегает до ворот на следующий уровень... и тут злобный пьяный электрик дядя саша коротит ноль на фазу и выключается свет, а у него нет ИБП. Представь игрока в этой ситуации , будет что-то наподобие этого http://www.youtube.com/watch?v=jQeC5yB8dE8
(Offline)
 
Ответить с цитированием
Старый 24.04.2012, 05:30   #38
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Внедрение стартого меню

Сообщение от reumep Посмотреть сообщение
ну да, проходит игрок суперсложный уровень, с десятой попытки получилось, почти добегает до ворот на следующий уровень... и тут злобный пьяный электрик дядя саша коротит ноль на фазу и выключается свет, а у него нет ИБП. Представь игрока в этой ситуации , будет что-то наподобие этого http://www.youtube.com/watch?v=jQeC5yB8dE8
Я лишь подсказал Devilox-у оптимальный для него вариант, доступный ему уже сейчас, на мой взгляд.
Когда у него будут нужные умения, то сделает всё что захочет.
Если игрок предрасположен к неадеквату, то он найдёт другую игру без сохранения и психанёт на ней. Короче, у такого почти нет выбора.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hulk-DS (24.04.2012)
Старый 25.04.2012, 17:39   #39
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Внедрение стартого меню

Да, вот ещё заключительный вопрос: как мне лучше всего организовать игру:
1)Сделать меню и все уровни в одном файле, загружать всё только после нажатия "New Game", а потом описывать переход по уровням - громоздкий код
2)Загрузить вообще всё сразу, скрыть и потом показывать, когда и что нужно(также в одном файле) - скрывать слишком много, код чуть-чуть поменьше, мне кажется, будет, но, по-моему, всё равно неудобно
3)Загрузить вообще всё, создать отдельные файлы уровней с функциями уже загруженных объектов и подружать когда надо - ну тут вообще не понятно, как тогда удалять функцию CreateBlaBla() со всеми её объектами...способ получился бы хорошим, если уровни можно бы было подгружать как функции и впоследствии удалять их, чтобы не нагружать комп
(Offline)
 
Ответить с цитированием
Старый 25.04.2012, 18:57   #40
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Внедрение стартого меню

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

Далее я б написал функции что то вроде этих:
LoadLevel(levelname$) - для загрузки необходимого уровня.
ClearLevel() - При окончании уровня удаляет все данные уровня для того, что б не мешали при загрузке следующего уровня, другими словами уберем шлак. Возможно здесь тоже пригодится параметр levelname$- это уже зависит от тебя и игры.
Initialize(levelname$) - Подготовка переменных (например координаты X,Y,Z игрока на каждом уровне). Настройки камер и прочего что в разных уровнях будет отличатся.

А загадочный levelname$ - путь к файлу с описанием левела. Либо можно по другом:
Function LoadLevel(levelname$)
Select levelname$
Case 
"Level 1"
;Описываем загрузку 1-го уровня.
Case 
"Level 2"
;Тут соответственно 2-го.
Case ...
;
и т.д.
Default
;
Выкидываем ошибкуибо уровня нет.
RuntimeError "Can`t find level: "+levelname$
End select
End 
Function 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (25.04.2012)
Старый 25.04.2012, 19:00   #41
reumep
Знающий
 
Аватар для reumep
 
Регистрация: 04.11.2011
Сообщений: 285
Написано 66 полезных сообщений
(для 159 пользователей)
Ответ: Внедрение стартого меню

Лично я предлагаю тот вариант, который будет удобней для тебя. Если ты будешь потом выкладывать исходники куда-то, то лучше удобночитаемый, красивый код. Если же это проект чисто для себя, то можно писать костыль на костыле, если тебе так удобно. Все равно потом можно будет оптимизировать
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (25.04.2012)
Старый 25.04.2012, 22:27   #42
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Внедрение стартого меню

Hulk-DS, объясни, пожалуйста, как мне сделать функцию ClearLevel(), если нужно удалить всех врагов, сделанных типом?

Последний раз редактировалось Devilox, 25.04.2012 в 22:46. Причина: Орфографическая ошибка :D
(Offline)
 
Ответить с цитированием
Старый 26.04.2012, 01:54   #43
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Внедрение стартого меню

Мало написал. Я не знаю в чем заключается твое непонимание данной проблемы...
Просто очищаешь все что есть только в этом уровне (модели, рисунки текстуры, звуки и т.д.)
Припустим есть у тебя пару типов:
Type Enemy
Field Mesh
Field X
,Y,Z
End Type

Type Inventar
Field ItemImage
Field ItemId
End Type 
Ты в игре наделал кучу типов и теперь нужно вызвать ClearLevel()
Пишем:
Function ClearLevel()
     For 
all.Enemy=Each Enemy
          
;И такМы запустили циклкоторый переберет абсолютно все
          
;ячейки типа EnemyОбрати вниманиеслово "all" всево лишь
          
;указатель на этот типМожешь использовать любое другое слово.
          ;
Как видишь в списке у нас хранится модель по адресуall/mesh
          
;Перед тем как очиистить тип от адресов и переменных нам нужно
          
;Удалить саму модельа потом уже удалять к ней адрес.
          
FreeEntity all/mesh
          
;А теперь можем смело удалять весю ячейку типаПеременные
          
;Удалятся из памяти самиА делать надо так
          Delete all
          
;Цикл будет повторятся столько разсколько у тебя ячеек в списке
          
;И удалит абсолютно все ячейки списка.
     
Next

     
;Остался еще один список Inventarв котором для каждого Итема
     
;Хранится рисунокДелаем почти то же самое:

     For 
LyboeImya.Inventar=Each Inventar
          FreeImage LyboeImya
/ItemImage ;Вместо модели удаляем рисунки.
          
Delete LyboeImya
     Next
End 
Function 
Короче, все что не является переменными нужно удалить отдельно вызовом специального оператора. Ибо вызвав команду Delete - ты не удалишь все модели, ты удалишь только адреса на них. После чего удаление этих самых моделей станет возможным только вызовом:
ClearWorld [entities][,brushes][,textures]

В этом заключалась проблема?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (26.04.2012)
Старый 26.04.2012, 15:12   #44
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Внедрение стартого меню

Да, в этом, просто у меня постоянно вылезали ошибки, либо не работало вовсе, сейчас попробую код заново весь перестроить
(Offline)
 
Ответить с цитированием
Старый 26.04.2012, 15:25   #45
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Внедрение стартого меню

Уже крен знает какой рас пощу эту ссылку. Связанные списки в Blitz3D
Если всю статейку освоишь, то со списками проблем появляться больше не должно.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (26.04.2012)
Ответ


Опции темы

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

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


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


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