|
3D-программирование Вопросы, касающиеся программирования 3D мира |
20.04.2012, 15:52
|
#31
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Вот ещё вопрос есть: когда мне нужно сделать паузу, я останавливаю обработку процессов, выключая Update-ы, а когда продолжаю игру, то все враги и аптечки по своему состоянию(убит-жив, собран-не собран) остаются прежними, а если я загружаю другое место игры, то как мне отследить состояния, чтобы выгрузить их в игру?
|
(Offline)
|
|
20.04.2012, 16:19
|
#32
|
Бывалый
Регистрация: 17.12.2011
Сообщений: 862
Написано 443 полезных сообщений (для 1,133 пользователей)
|
Ответ: Внедрение стартого меню
Ну, составь список, всего того, что должно учитываться при загрузки левела, из которого уходишь и сохрани в файл, например или в банк или в массив или в тип, потом загрузи когда возвращаться будешь, да это всё просто, сложно игру сделать!
|
(Offline)
|
|
20.04.2012, 16:36
|
#33
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Это-то понятно, я вот пример почитал, переменные сохранять могу:
http://forum.boolean.name/showthread.php?t=1014
Дело в другом: у меня тип с врагами, и нужно сохранить, каких именно я убил, а каких - нет
|
(Offline)
|
|
20.04.2012, 16:47
|
#34
|
Бывалый
Регистрация: 17.12.2011
Сообщений: 862
Написано 443 полезных сообщений (для 1,133 пользователей)
|
Ответ: Внедрение стартого меню
Ну, записывай тех которых убил, в тёмную книгу сохранения я не знаю как ещё объяснить вроде просто всё.
и пусть они больше не загружаются.
И с объектами которые можно подобрать поступай тем же борзом.
А вообще лучше не возвращаться обратно, а то возникает ощущение что где-то я уже это видел, но это ощущение не похоже на дежавю
это скорее говорит о том что игрок ходит по кругу.
Ааа, ну тех которых убил Delete из типа, а их имена записывай, метод вроде тот-же, только с другой стороны
пусть функция проверяет перед стартом кто или что было удалено из файла или откуда там.
При старте проверяй что-то вроде if not б\блабла="бот который" делете б, я не помню как там на блитзе.
Ну да тут смотря чего больше мёртвых ботов или живых, это уже оптимизация, тут думай сам каких сохранять, но в любом случае, сохранять нужно, либо живых либо мёртвых в зависимости от дальнейший загрузки!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.04.2012, 18:12
|
#35
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Внедрение стартого меню
Я предлагаю забыть о сохранении состояния уровня, хранить только номер уровня: если игрок не прошёл уровень, то ничего страшного, заново начнет.
А потом когда-нибудь доработаешь.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.04.2012, 19:41
|
#36
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Думаю, что это неплохая идея, учитывая, что это первый проект
Последний раз редактировалось Devilox, 20.04.2012 в 23:32.
|
(Offline)
|
|
23.04.2012, 22:33
|
#37
|
Знающий
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.04.2012, 17:39
|
#39
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Да, вот ещё заключительный вопрос: как мне лучше всего организовать игру:
1)Сделать меню и все уровни в одном файле, загружать всё только после нажатия "New Game", а потом описывать переход по уровням - громоздкий код
2)Загрузить вообще всё сразу, скрыть и потом показывать, когда и что нужно(также в одном файле) - скрывать слишком много, код чуть-чуть поменьше, мне кажется, будет, но, по-моему, всё равно неудобно
3)Загрузить вообще всё, создать отдельные файлы уровней с функциями уже загруженных объектов и подружать когда надо - ну тут вообще не понятно, как тогда удалять функцию CreateBlaBla() со всеми её объектами...способ получился бы хорошим, если уровни можно бы было подгружать как функции и впоследствии удалять их, чтобы не нагружать комп
|
(Offline)
|
|
25.04.2012, 18:57
|
#40
|
Разработчик
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.04.2012, 19:00
|
#41
|
Знающий
Регистрация: 04.11.2011
Сообщений: 285
Написано 66 полезных сообщений (для 159 пользователей)
|
Ответ: Внедрение стартого меню
Лично я предлагаю тот вариант, который будет удобней для тебя. Если ты будешь потом выкладывать исходники куда-то, то лучше удобночитаемый, красивый код. Если же это проект чисто для себя, то можно писать костыль на костыле, если тебе так удобно. Все равно потом можно будет оптимизировать
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.04.2012, 22:27
|
#42
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Hulk-DS, объясни, пожалуйста, как мне сделать функцию ClearLevel(), если нужно удалить всех врагов, сделанных типом?
Последний раз редактировалось Devilox, 25.04.2012 в 22:46.
Причина: Орфографическая ошибка :D
|
(Offline)
|
|
26.04.2012, 01:54
|
#43
|
Разработчик
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.04.2012, 15:12
|
#44
|
ПроЭктировщик
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений (для 9 пользователей)
|
Ответ: Внедрение стартого меню
Да, в этом, просто у меня постоянно вылезали ошибки, либо не работало вовсе, сейчас попробую код заново весь перестроить
|
(Offline)
|
|
26.04.2012, 15:25
|
#45
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Внедрение стартого меню
Уже крен знает какой рас пощу эту ссылку. Связанные списки в Blitz3D
Если всю статейку освоишь, то со списками проблем появляться больше не должно.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:26.
|