forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на MidletPascal (http://forum.boolean.name/forumdisplay.php?f=88)
-   -   Deathmatch RPG (http://forum.boolean.name/showthread.php?t=13172)

Eggis 19.08.2010 19:29

Deathmatch RPG
 
Вложений: 3
Мой первый проект вообще и на MP в частности.

Представляет собой некое подобие RPG, где нужно сражаться с другими игроками 1 на 1 по Bluetooth. Сейчас оно ещё очень сыро, но во всяком случае работает.

Идей много, все подлежат постепенной реализации, буду очень признателен, если будут указаны серьёзные баги (кроме моих кривых рук, гы :)

Использовались библиотеки arcade, alpha, font32 от odd и lib_bt от piligrim, спасибо им большое.
За неимением таланта художника, использовались спрайты из warcraft2

Прикрепил два скрина и работоспособную демку (атаки на 1, 3, джойстик).

Вложение 10993Вложение 10994
Вложение 10995

KeipL 20.08.2010 00:24

Ответ: Deathmatch RPG
 
Выглядит довольно мило.для первого проекта, имхо, хороший старт.
Отдельное спасибо за скрины.
Потестить не удалось ибо нет товарища с синезубом. создай небольшой соло-гейм с ботом.

psih1 20.08.2010 11:00

Ответ: Deathmatch RPG
 
дай пример передвижения персонажей

Eggis 20.08.2010 11:21

Ответ: Deathmatch RPG
 
Ммм... насчёт соло-гейма с ботом: я и начал-то синезуб, потому что мне ИИ делать попросту страшно, или нужен просто болванчик?
Я проверяю на WTK, два эмулятора "коннектятся" друг к другу по Bluetooth, нет необходимости в телефонах (хотя иногда это даёт неприятные сюрпризы вроде ошибки OutOfMemory на телефоне при последующей проверке).

2psih1: что именно необходимо? Я, если честно, некоторую часть подсмотрел в демке lib_arcade, чтобы понять принцип.

Ахтунг: на нокиях типа n70 работает некорректно (возможно, проблема в lib_arcade, т. к. демку от него такая нокия тоже играет некорректно)

Eggis 21.08.2010 20:10

Ответ: Deathmatch RPG
 
Вложений: 3
Надеюсь, тут не пинают за даблпост.

Сделал функцию назначения клавиш, пока что без защиты от дурака, так что просьба на прочность не проверять :)
Назначать можно клавиши 1, 3, 7, 9, 5, 0, #, *, нужно просто ввести соответствующий символ в поле.

Также сделал немножко заклинаний/умений, чтобы можно было порубаЦЦа.

Как обычно, два скрина и демка. Скрины с эмуля WTK, показан юзеринтерфейс.
Вложение 11002Вложение 11001Вложение 11000

PS. Кто-нибудь знает, как убрать софтполоску внизу, не используя Lib_Game? Вопрос такой возник оттого что на эмуляторе эта полоска есть, а на телефоне нет (потому что стоит MIDP 2.0 Fullscreen). Или сие не лечится?

Bananbl4 22.08.2010 10:32

Ответ: Deathmatch RPG
 
На эмулях некоторых она всегда есть. На KEMul'е например, если есть команды, она никуда не денется, только ниже экрана будет:

Eggis 22.08.2010 22:17

Ответ: Deathmatch RPG
 
Вложений: 1
Опытным путём выяснил, что полоска на WTK всё же убирается, но у меня остаётся. Опять же опытным путём выяснил, что это из-за отрисовки формы в начале программы. Т. е. если бы сразу всё шло в режиме canvas, подобного безобразия бы не случилось.

Видимо, придётся сразу клепать графическое меню :)

+ новая версия (прикручено красивостей (иконочки), только и всего)
Вложение 11016

cherepets 23.08.2010 00:38

Ответ: Deathmatch RPG
 
заделай сингл-плеер, а то тестить на реальных телефонах сложновато

Eggis 23.08.2010 15:49

Ответ: Deathmatch RPG
 
Вложений: 1
Игрок 2 тупо стоит на месте, имеет некоторое хп, может умирать. Просто технодемка.
Скорее всего, проект на некоторое время будет заморожен в связи с моим переездом на место учёбы. Обещаю вернуться :D
Вложение 11020

cherepets 23.08.2010 20:21

Ответ: Deathmatch RPG
 
суровая вещь, правда работает не быстро

Eggis 11.09.2010 19:22

Ответ: Deathmatch RPG
 
Так, я практически настроен на дальнейшую работу над проектом. Немного подумал, поглядел на ошибку OutOfMemory, на показатели монитора памяти в WTK и пришёл к выводу, что движок надо писать самому (хотя бы отчасти). Дикие лаги просто оттого, что на телефоне отрисовывается дофига объектов (> 600), а мы видим, ну... мало, короче.

Далее, повторение фразы вслух сотни раз: "Вызывайте repaint только когда это _реально_ необходимо" - тоже дало свои результаты, я понял, что перерисовывать надо только часть экрана. (Кстати, как это? clip+тот же repaint?)
Вопрос такой: можно ли удалять спрайт? Т. е. не "замазывать" его поверх тайлом, а именно удалять? Хотя, что-то мне подсказывает, что такого не бывает.

В-общем, если есть какие-то идеи по оптимизации (особенно интересует частичное перерисовывание экрана), то очень хотелось бы их услышать.

Nex 12.09.2010 05:38

Ответ: Deathmatch RPG
 
С MidletPascal особо дел не имел, но попробуй проверять тайлы по координатам и если они "на экране", то рисуй иначе нет. :)

Eggis 12.09.2010 15:16

Ответ: Deathmatch RPG
 
Ну, это-то я как раз понял, даже примерно представляю себе как это сделать :D

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

Nex 12.09.2010 15:51

Ответ: Deathmatch RPG
 
Цитата:

Сообщение от Eggis (Сообщение 161760)
Фишка в том, например, что HUD и полоска с заклинаниями снизу у меня отрисовываются каждый раз, когда идёт перерисовка всего экрана, мне бы хотелось как-то этих ненужных операций избежать.

А если перерисовывать только после изменения параметров, которые выводит худ (если это возможно)? :)

Eggis 12.09.2010 16:38

Ответ: Deathmatch RPG
 
Ну, худ у меня разделён на две части: статичная (портрет + окаймление) и собственно показатели. Если показатели можно выводить действительно при изменении, то статичную часть как бы и трогать не хочется. Я пока вижу только один выход: разделить экран на две части: статичную (худ и экшнбар) и собственно игровое поле. Наверно, так и сделаю.

АПД: сделал примитивнейший движок, память сразу же стала "съедаться" медленнее, теперь осталось только пофиксить лаги от спрайтов игрока.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot