| Проект: Последний вирус |
|
WfalconW
| Дата: Понедельник, 05.01.2009, 07:10 | Сообщение # 1 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Название: The Last Virus (Последний вирус) - ДЕМО Жанр: Шутер, РПГ, Хоррор Скриншоты: Описание: Игра, которая пока не имеет чёткой консистенции. В некоторых местах она комочками, в некоторых гладкая. Вы выбираете одного из трёх персонажей и берёте старый, но надёжный миниган, который не стрелял несколько лет и идёте защищать остатки города, после падения метеорита, который заразил местную фауну страшнейшим вирусом. Пока от финального геймплея тут ещё далеко, но уже сейчас можно заценить демо уровень. Там много недоработок, но многие из них на данный момент исправлены. Среда разработки: GameMaker 7.0 Разработчики: Александр WfalconW Соколов Jeners - кровь, туман и куча копитальных исправлений многих важных деталей Wertolet - коды к компьютеру И другие... Дата начала работы: Полтора года назад Дата релиза: не известна Способ распространения: Бесплатно Ожидаемая обратная связь: Поиск ошибок и помощь в некоторых модулях кода. Буду рад любой помощи. Присоединяйтесь) Дополнительно: Разрешено писать прилюдно про найденные фичи и секреты, хоть их и не много) А так же тактику игры))) Старые ссылки будут серые, а самая новая зелёной, не путайте пожалуйста! Скачать: Версия от: 21.04.2009 Полная версия: Народ: http://narod.ru/disk/7964372000/FinalVirusDemo.rar.html Лайт версия: Народ: http://narod.ru/disk/7969092000/TheLastVirusLite.7z.html Версия от: 27.04.2009 Полная версия: Прямая ссылка (7.89мб) Версия 0.20 от: 04.06.09 Размер 9.98mb Депозит Летитбит Народ Версия 0.37 от: 05.11.09 Размер 11.2mb Народ gmaker.su
Версия 0.43 от: 12.06.10 Размер 21.7 мб ФАЙЛЫ ПЕРАЗАЛИТЫ С ПОПРАВКОЙ ИНВЕНТАРЯ file.qip.ru Народ
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Ang3L
| Дата: Четверг, 26.03.2009, 14:50 | Сообщение # 81 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2741
Статус: Offline
|
Quote (WfalconW) Буду пробовать, хотя, как проверить, что я удалил бек? Использовать его где-то? Списки обычно делают. Или по памяти см.
Blogpost
|
| |
| | |
|
WfalconW
| Дата: Четверг, 26.03.2009, 15:06 | Сообщение # 82 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Quote Списки обычно делают. Или по памяти см. Со списками близко не знакомился, принцип знаю. Думаю найду нужную инфу в темах)
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Druce
| Дата: Четверг, 26.03.2009, 18:28 | Сообщение # 83 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1543
Статус: Offline
|
Quote (WfalconW) Максимум инут 10 - у меня объектов не очень много. Я всё делаю тайлами, что бы лучше работало. А прописать - это сделать кодом деактивации по дистанции или как? Просто никогда не опльзовал - очень хотел узнать, а то у меня в одном проекте объекты шкалят и 30фпс нету. Просто каждому объекту пишешь в дров: if x>view_xview-50 and y>view_yview-50 and x<view_xview+view_wview+50 and y<view_yview+view_hview+50 {.....нарисовать этому объекту что надо} Тогда объекты на другом конце карты рисоваться не будут, что и должно по идее дать прирост скорости. Так ты будешь таки делать все трупы и кровь отдельными тайлами? ну как хочешь, конечно.
druce.ucoz.ru|andrewsweekly.livejournal.com|А OneStep тем временем мертв.
|
| |
| | |
|
WfalconW
| Дата: Пятница, 27.03.2009, 12:13 | Сообщение # 84 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Quote Так ты будешь таки делать все трупы и кровь отдельными тайлами? ну как хочешь, конечно. Пока работает хорошо, но вообщем я и рад сделать лучше, но я не хочу и Вас доставать. Мне интересно доходить до конца самому, но в тоже время хреново получается, а когда просто собираешь код, вдруг раз и получилось, что-то необычное, но не в тему и не для такого вида проекта. На счёт сурфейса я не понял всего одну вещь: если я сделаю поле 1024 на 1024, что бы покрыть всю видимою территорию экрана и буду на неё отрисовывать сурфейсом трупы, то не будет уменя проблем с движением камеры? Или зона рисования неограничена, а вводим мы координаты только той части, которая отображается на экран и в данный момент обрабатывается? Quote {.....нарисовать этому объекту что надо} Может я чёт не до понимаю, но, что именно рисовать? У меня есть объекты со спрайтами их что ли рисовать? Я думал, что объект вообще выключить ) Добавлено (27.03.2009, 11:44) --------------------------------------------- Млин! Может вы ошиблись? Беков нету. Т.е. я удаляю бек с именем, которое присваивается, и вылетает ошибка, что ничего с аким именем не существует( может есть какая команда для очистки памяти? Или хотя бы посмотреть, что действительно влияет на игру. Ща ещё кое что попробую... Просто так в кайф когда всех убиваешь и ФПС 950 Добавлено (27.03.2009, 12:13) --------------------------------------------- Нда. Не добился я результатов. Три раза убивал 500 монстров - фпс падало до 90 после всех убийств 130 через меню начал по новой фпс 950 я три раза убивал тонны монстров. Не заметил ухудшейни. Видимо мой способ глуп и не подходит...
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Ang3L
| Дата: Пятница, 27.03.2009, 12:16 | Сообщение # 85 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2741
Статус: Offline
|
Quote (WfalconW) Нда. Не добился я результатов. Три раза убивал 500 монстров - фпс падало до 90 после всех убийств 130 через меню начал по новой фпс 950 я три раза убивал тонны монстров. Не заметил ухудшейни. Видимо мой способ глуп и не подходит... Слишком много объектов остаётся. Удаляй их.
Blogpost
|
| |
| | |
|
WfalconW
| Дата: Пятница, 27.03.2009, 12:21 | Сообщение # 86 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Всё тёрь я понял. Беки реально хорошо жрут и самое ужасное не очищаются... Я смотрел через ctrl+alt+delete в процессах свой нашёл и каждое убийство по 50 добавляло пока не дошло до 68000 у меня опера чуть больше жрёт. Добавлено (27.03.2009, 12:21) ---------------------------------------------
Quote Слишком много объектов остаётся. Удаляй их. А именно беков. Их id вообще реально узнать имея всего название или надо при каждом создании им присваивать что-то и добавлять в список их id. Я ещё попробую на сурфейс перенести всё это дело, может получиться)
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Ang3L
| Дата: Пятница, 27.03.2009, 13:12 | Сообщение # 87 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2741
Статус: Offline
|
Quote (WfalconW) Их id вообще реально узнать имея всего название или надо при каждом создании им присваивать что-то и добавлять в список их id. Ну точно так же как и с инстансами. Возращаешь ид бека, при созданий, куда-нибудь его пихаешь. А потом, когда надо, удаляешь.
Blogpost
|
| |
| | |
|
WfalconW
| Дата: Пятница, 27.03.2009, 14:42 | Сообщение # 88 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Quote Ну точно так же как и с инстансами. Возращаешь ид бека, при созданий, куда-нибудь его пихаешь. А потом, когда надо, удаляешь. ВОзвращаешь - это присваивание беку при создании? Я вообще с id не работал, т.е. у объекта я могу получить или присвоить, а вот беку. Я даже не знал, что у них есть id. Чёт чёня в этом плане день не рподуктивный. Пойду отдохну. А потом ещё поковыряю. Во попал в трясину)))
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Druce
| Дата: Пятница, 27.03.2009, 14:55 | Сообщение # 89 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1543
Статус: Offline
|
WfalconW, сурфейс надо размером _во всю комнату_. Если комната большая, то лучше конечно все-таки тайлами. Скока у тя в среднем размер комнаты? Про тайлы: делай типа так - когда делаешь бэк, напиши типа Code aaa=background_create_from_surface() tile_add() ds_list_add(global.list,aaa) а потом при окончании комнаты Code while !ds_list_empty(global.list) { background_delete(ds_list_find_value(global.list,0)) ds_list_delete(global.list,0) } ds_list_destroy(glob al.list) Ну и разумеется не забудь лист в начале создать global.list=ds_list_create(). Quote (WfalconW) Может я чёт не до понимаю, но, что именно рисовать? У меня есть объекты со спрайтами их что ли рисовать? Я думал, что объект вообще выключить ) Ну у тебя же у большинства объектов есть событие рисования и в нем чета написано? Если чета есть, то обрами эти действия в скобки и поставь перед ними условие. Если ниче нету, то создай событие рисования и напиши там Code if x>view_xview-50 and y>view_yview-50 and x<view_xview+view_wview+50 and y<view_yview+view_hview+50 draw_sprite_ext(sprite_index,-1,x,y,image-xscale,image_yscale,image_angle,image_blend,image_alpha) Рисоваться все должно точно так же, но только в том случае, если объект находится в пределах экрана и ты его можешь видеть. Такие условия не надо ставить только для тех объектов, которые видны всегда, например худ, герой или прицел. Рисуя что-то за пределами экрана ты просто теряешь компьютерное время и фпс. И всегда следи, чтобы у тебя не было лишних объектов. Например, для монстров сделай точки респавна, чтобы объекты их появлялись только в нужный момент, и после себя оставляли только тайлы.
druce.ucoz.ru|andrewsweekly.livejournal.com|А OneStep тем временем мертв.
|
| |
| | |
|
WfalconW
| Дата: Пятница, 27.03.2009, 15:13 | Сообщение # 90 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Quote WfalconW, сурфейс надо размером _во всю комнату_. Если комната большая, то лучше конечно все-таки тайлами. Скока у тя в среднем размер комнаты? От 2000 и больше. Обучающий уровень 5000 на 2048. И по меркам моей игры - это маленький уровень. Quote Про тайлы: делай типа так - когда делаешь бэк, напиши типа Code aaa=background_create_from_surface() tile_add() ds_list_add(global.list,aaa) а потом при окончании комнаты Code while !ds_list_empty(global.list) { tile_delete(ds_list_find_value(global.list,0)) ds_list_delete(global.list,0) } ds_list_destroy(global.lis t) Ну и разумеется не забудь лист в начале создать global.list=ds_list_add(). Во! Терь я понял как получать id. Я оказывается уже этим пользовался, ну, например пули у меня, но я был уверен, что берётся не id, а просто как бы объект. Quote Ну у тебя же у большинства объектов есть событие рисования и в нем чета написано? Если чета есть, то обрами эти действия в скобки и поставь перед ними условие. Если ниче нету, то создай событие рисования и напиши там Увы не в этот раз. Я старался экономить. Вся карта у меня состоит из тайлов, а стены выставляютя вручную невидимыми объектами. такой подход ОЧЕНЬ сильно ускоряет игру, ведь тайлы рисуются, когда они видны, я тогда попробую перевести все спрайты у объектов в draw. Получается этот код должен за пределами экрана не рисовать спрайт, но ведь вычисления остаются? А мне бы ещё блокировать все вычисления не помешало бы. Quote И всегда следи, чтобы у тебя не было лишних объектов. Ды уж итак всё перещитано и расставлено трижды. Quote Например, для монстров сделай точки респавна, чтобы объекты их появлялись только в нужный момент, и после себя оставляли только тайлы. Да я так и сделал. На скрине редактора Гм выше можешь рассмотреть чёрные полосы - это триггеры, котоыре активируют глобальную переменную и сразу же удаляются. И есть точки, которые рождают какое-то количество монстров, заранее введённое в объект. Ещё в объекте прописан процент монстров, что может удивить не только игрока, но и меня. Я привык, что с одного респуна всегда 4 личинки появляются, а тут вдруг раз и лось выбежал и забодал моментом), поэтому я теперь аккуратнее гуляю. Druce, Ещё раз тебе спасибо! Думаю лист будет работать правильно и исправь опечатку в последней строчке. Там пробел в слове list
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
NewStrannik
| Дата: Пятница, 27.03.2009, 15:31 | Сообщение # 91 |
Всех уже задолбал
Группа: Проверенные
Сообщений: 808
Статус: Offline
|
WfalconW,Стэк (или очередь) в данном случае чуть-чуть удобней, нежели лист. Вот примерная реализация: Quote ('Создание стэка') global.backs=ds_stack_create(); Quote ('Создания тайла ...') aaa=background_create_from_surface(); /*Создаёшь тайл*/ ds_stack_push(global.backs,aaa); Quote ('Удаление всех бэков') while !ds_stack_empty(global.backs) background_delete(ds_stack_pop(global.backs)); И ещё, читай справку. Там написано, что функции возвращают. Айди - это простое число, порядковый номер хрени какой-нибудь. Druce, у тебя очепятка, не tile_delete(), а background_delete(). И вместо global.list=ds_list_add() => ds_list_create(). Странно, куда так торопился?
|
| |
| | |
|
Druce
| Дата: Пятница, 27.03.2009, 16:01 | Сообщение # 92 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1543
Статус: Offline
|
WfalconW, не, то, что в тайлах мона оставить. И нужно. Но если у тебя есть какие-нибудь активные объекты, те же монстры за пределами экрана, то их желательно за экраном не рисовать. С вычислениями то же самое. Кстати, на практике оказывается, что многие вещи можно не считать в степе, а вынести в алярмы и считать через каждые пару шагов. И сделать так, чтобы из такого типа объектов каждый шаг считалась часть. Например тот же поиск пути для монстрей, можно его считать через шаг, а то и через два, не особо будет заметно, но нагрузки уже меньше. NewStrannik, про стеки - можно и стеки, но лично я не уверен, что, лист или стек, будет работать быстрее. Наверное, все-таки стек, но к листам я привык. Quote (NewStrannik) Druce, у тебя очепятка, не tile_delete(), а background_delete(). И вместо global.list=ds_list_add() => ds_list_create(). Странно, куда так торопился? Пасиба. Кстати, там осталось написано "glob al.list" с пробелом. Чета он не хочет запоминать правильно. Ну не суть. А куда торопился? хз, просто нервишки пошаливают, мне скоро олимпиаду писать, вот руки и дрожат))
druce.ucoz.ru|andrewsweekly.livejournal.com|А OneStep тем временем мертв.
|
| |
| | |
|
WfalconW
| Дата: Пятница, 27.03.2009, 16:39 | Сообщение # 93 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Quote не, то, что в тайлах мона оставить. И нужно. Я подразумевал монстров) Если мне все тайлы переделывать...Я бы комп из окна выкинул), ну образно естественно)))) Quote те же монстры за пределами экрана Тригерры работают так, что у монстров мало шансов остаться забытыми за пределами экрана, а если они там и оказываются, то достаточно быстро(Не в очень сложных помещениях) могут найти игрока довольно быстро. Quote Кстати, на практике оказывается, что многие вещи можно не считать в степе, а вынести в алярмы и считать через каждые пару шагов. Да, я думаю вот эта идея просто замечательная. У меня монстры идвигаются примерно по шагам, но всё это в степе. Т.е. они не бегут чисто на игрока, а с достаточной задержкой, что даёт вохможность убегать от них. Quote Пасиба. Кстати, там осталось написано "glob al.list" с пробелом. Чета он не хочет запоминать правильно. Ну не суть. А куда торопился? хз, просто нервишки пошаливают, мне скоро олимпиаду писать, вот руки и дрожат)) Я ещё пока не садился за проект. Сегодня выспался и встал поздно, поэтому вечером или завтра займусь.
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Ang3L
| Дата: Пятница, 27.03.2009, 16:48 | Сообщение # 94 |
Каждый 5й пост мой
Группа: Админы
Сообщений: 2741
Статус: Offline
|
Quote (WfalconW) я был уверен, что берётся не id, а просто как бы объект. Мы же уже говорили, в гм нет составных переменных, поэтому о возращений целого объекта нет и речи. Можено вернуть real, т.е. его номер. А ещё есть string. Вот и всё с чем ты можешь манипулировать. Да, для удаления можешь использовать очередь. Забиваешь туда, а как только размер очереди > чем_нужно, то удаляешь первый элемент. Таким образом, и лишнего переполнения не будет, и тайлы(или что у тя там) не будут удалятся раньше времени.
Blogpost
|
| |
| | |
|
WfalconW
| Дата: Суббота, 28.03.2009, 14:50 | Сообщение # 95 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
NewStrannik, Druce, Благодарю код со списком прекрасно работает и всё удаляет под чистую. Теперь надо сделать так, что бы код зачистки нельзя было обойти. Добавлено (28.03.2009, 14:50) --------------------------------------------- Ang3L, Quote Да, для удаления можешь использовать очередь. Забиваешь туда, а как только размер очереди > чем_нужно, то удаляешь первый элемент. Таким образом, и лишнего переполнения не будет, и тайлы(или что у тя там) не будут удалятся раньше времени. Я сделаю опционально. Мне больше нравиться, когда трупы валяются всю партию)
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Druce
| Дата: Суббота, 28.03.2009, 14:53 | Сообщение # 96 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1543
Статус: Offline
|
WfalconW, Quote (Ang3L) Да, для удаления можешь использовать очередь. Забиваешь туда, а как только размер очереди > чем_нужно, то удаляешь первый элемент. Таким образом, и лишнего переполнения не будет, и тайлы(или что у тя там) не будут удалятся раньше времени. Кстати, это действительно очень здравая мысль. Загоняй все тайлы не в список (list), а в очередь (queue). И в настройках можно запросто поставить градацию "сколько показывать трупов" - нету, мало, много или не удалять их вообще. То есть ты просто периодически смотришь, сколько у тебя элементов в очереди, и если их больше чем установленное значение, то удаляешь верхние значения из очереди до тех пор, пока их не останется сколько надо. В конце концов можно даже так - умер монстрик, он смотрит - если есть больше 100 трупов, то первый удаляет и ложит себя. Кстати, никто не знает, при удалении бэка тайлы, сделанные из него автоматом удаляются?
druce.ucoz.ru|andrewsweekly.livejournal.com|А OneStep тем временем мертв.
|
| |
| | |
|
WfalconW
| Дата: Суббота, 28.03.2009, 14:57 | Сообщение # 97 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Quote Кстати, никто не знает, при удалении бэка тайлы, сделанные из него автоматом удаляются? Чёрт! Если так, то мы ерундой занимались? Т.е. остаются пустые тайлы... Лучше было бы если тайлы бы удалялись!
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Druce
| Дата: Суббота, 28.03.2009, 15:01 | Сообщение # 98 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1543
Статус: Offline
|
WfalconW, не, я к тому, что надо удалять или бэки или бэки и тайлы. Но для второго просто загоняешь пары значений индекс тайла + индекс бэка, затем в одной итерации цикла берешь два значения, зная, что первое, например, - тайл и подставляешь его в функцию удаления тайла, а второе - индекс бэка, подставляешь в другую ф-цию.
druce.ucoz.ru|andrewsweekly.livejournal.com|А OneStep тем временем мертв.
|
| |
| | |
|
WfalconW
| Дата: Суббота, 28.03.2009, 15:04 | Сообщение # 99 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1687
Статус: Offline
|
Quote Кстати, это действительно очень здравая мысль. Загоняй все тайлы не в список (list), а в очередь (queue). И в настройках можно запросто поставить градацию "сколько показывать трупов" - нету, мало, много или не удалять их вообще. То есть ты просто периодически смотришь, сколько у тебя элементов в очереди, и если их больше чем установленное значение, то удаляешь верхние значения из очереди до тех пор, пока их не останется сколько надо. В конце концов можно даже так - умер монстрик, он смотрит - если есть больше 100 трупов, то первый удаляет и ложит себя. Я же сказал ОПЦИОНАЛЬНО. Это значит будет возможность менять опции именно так, как ты написал) Проверка каждого монстра хороша, когда монстры по одному раз в минуту, а вот, когда они толпой, то это может замедлить игру, если ещё учитывать, что ФПС сразу напрягается, когда монстры только появляются и идут, а если ещё всякие проверки при смерти))) Лучше пусть будет дёргание раз в минуту, при проверке. Большинство даже не заметит, да и с фпс 950 - 100% не заметят, а в бою и так может подёргивать и лишний дёрг ничего не решит. ))) Ну, вообщем будем пробовать.
wfalconw.asuscomm.com - мой сервер мейнкрафта. Работает не 24/7 Жертва родины, блог разработки: http://wfalconw.livejournal.com/
|
| |
| | |
|
Druce
| Дата: Суббота, 28.03.2009, 15:08 | Сообщение # 100 |
Каждый 5й пост мой
Группа: Страж
Сообщений: 1543
Статус: Offline
|
WfalconW, чета мне все-таки не верится в 950 фпс)) На моем компе стока даже пустая комната не покажет. Ну может 700 будет.
druce.ucoz.ru|andrewsweekly.livejournal.com|А OneStep тем временем мертв.
|
| |
| |
|
|