- Сообщений: 76
- Спасибо получено: 47
Отзывы, впечатления, критика
- sam0delk1n
- Не в сети
- Интересующийся
-
Хорошо, теперь фризов нет. В целом вполне играбельно.StaticZ пишет: Тем не менее сделал, как просили.
Однако вчера я невнимательно смотрел Ваш первый код.
Там действительно Sleep(1) вызывается уже после обработки всех сообщений из очереди в пределах миллисекунды.
Получается что это либо невероятно быстрая мышь, либо PeekMessage просто не удаляет сообщение из очереди, либо движок подкидывает какой-то спам в своё же окно.
В одном моём проекте был такой код:
Я попробовал заменить hWnd на NULL, а также убрал лимит сообщений:
То есть получилось по логике примерно то как Ваш первый код --
пока все сообщения не обработаются, управление не перейдет к рисовалке.
Однако даже такой код у меня не давит на FPS и корректно обрабатывает мышь.
Я использовал туже мышь, туже ОС и тот же PeekMessage, следовательно проблема может оставаться в кокосе.
Можно конечно попробовать Вам вместо NULL задать явно дескриптор окна, может кокос создает какое-то второе скрытое окно или ещё что-то.
Но в целом это уже не так важно, т. к. должен существовать лимит либо по времени, либо по кол-ву сообщений, тогда даже в случае спама в очереди, приложение будет рисовать и обновлять своё состояние.
Кстати я выбрал ограничение по кол-ву, потому что ограничение по времени лучше делать с помощью синхронизации в GAPI, т. к. только видеодрайвер может точно произвести смену буферов в момент обновления развертки экрана.
Ну пока вроде всё.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Удаляется, если вызывается с параметром PM_REMOVE и не удаляется если вызывается с параметром PM_NOREMOVE.sam0delk1n пишет: Получается что это либо невероятно быстрая мышь, либо PeekMessage просто не удаляет сообщение из очереди, либо движок подкидывает какой-то спам в своё же окно.
Насчет кокса, врядли они особо не напрягались насчет винды, абы как работало... Насчет быстрой мыши, проверить не могу, но ИМХО бред, если бы это был DirectInput какой-то то еще возможно, но так как я уже говорил с мышью работает драйвер а события отсылаются самой системой, т.е. это маразм для ОС флудить при отсутствии изменений, так что более вероятно косяк\конфликт драйвера или это происки какой либо софтины - всякое ПО по украшению виндов, добвляющее свои менюшки кнопки в окна и т.д. зачастую крайне жестко насилуют винду, к примеру инжектя свой код в каждое запущенное приложение.sam0delk1n пишет: Получается что это либо невероятно быстрая мышь, либо PeekMessage просто не удаляет сообщение из очереди, либо движок подкидывает какой-то спам в своё же окно.
Да нет, проверял уже - все нормально...sam0delk1n пишет: Можно конечно попробовать Вам вместо NULL задать явно дескриптор окна, может кокос создает какое-то второе скрытое окно или ещё что-то.
Ну проблема как я понял решена, а лезть в дебри кокса без надобности желания у меня нет, т.к. уже начал работать над следующим проектом...sam0delk1n пишет: Кстати я выбрал ограничение по кол-ву, потому что ограничение по времени лучше делать с помощью синхронизации в GAPI, т. к. только видеодрайвер может точно произвести смену буферов в момент обновления развертки экрана.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Спасибо за замечание, да, есть такая проблема, и я даже думала, как ее лучше решить. Но так ничего путного на этот счет не придумала. У игрока есть возможность сделать рестарт в любой момент игры, кроме того, если мы будем ставить гейм овер в случае состояния вывода из равновесия и заведомо проигрышной ситуации, это может еще больше раздражать игрока, потому что со стороны это может выглядеть "эй, а почему конец игры? Так не честно!!!" Насчет идеи ход назад - уже куда более изящное и красивое решение, что-то в этом есть. Но в этом случае возникает проблема с уровнями на время, где ходы идут слишком быстро. Я посчитала эту проблему некритичной тогда, когда с ней столкнулась. Возможно, зря)Там есть такие моменты, особенно с неприкасаемыми смайлами, когда эта пазл-система изначально находится в таком состоянии, в которую невозможно её привести используя доступные игроку действия.
Причём если случайно вывести её из этого состояния, можно создать ситуацию когда выиграть нельзя.
Часто это происходит незаметно для игрока, он может продолжать играть в заведомо нерешаемый пазл.
ящитаю нужно либо явно намекнуть, что вот тут так бывает, либо сделать механику позволяющую вернуться из любого состояния.
А вообще молодцы, что разобралися
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- sam0delk1n
- Не в сети
- Интересующийся
-
- Сообщений: 76
- Спасибо получено: 47
Не то чтобы я предложил сделать явный откат хода назад, я имел ввиду чтобы ходы можно было делать в обе стороны, НО имея такую механику этого сделать неполучится, например нельзя разорвав тройную_цепь_радости обратно отнять одну_единицу_радости у всех смайлов в зоне действия. То есть другими словами есть состояние и есть событие. Система может иметь играбельное состояние и неиграбельное. Состояние можно сменить обратно, то есть если я произвел ряд действий, которые привели систему в данное состояние, я могу произвести противоположные действия в обратном порядке чтобы привести систему в исходное состояние. Таким образом если система изначально находилась в играбельном состоянии, я её могу вернуть всегда к исходному состоянию, значит она всегда теоретически находится в играбельном состоянии. События происходят только в одну сторону, и после некоторого количества событий система может находиться в состоянии из которого оставшееся множество доступных событий не сможет привести систему в состояние победы. Таким образом нужно либо дать игроку набор событий которые реанимируют систему из любого состояния (что сильно упростит игровой процесс), либо дизайнеру нужно очень внимательно отслеживать то какие события досупны игроку, учитывать возможные комбинации их применения, учитывать какие наборы событий будут нужны из вывода (или невывода) системы в победное состояние после применения предыдущих комбинаций событий.AnnTenna пишет: Спасибо за замечание, да, есть такая проблема, и я даже думала, как ее лучше решить. Но так ничего путного на этот счет не придумала. У игрока есть возможность сделать рестарт в любой момент игры, кроме того, если мы будем ставить гейм овер в случае состояния вывода из равновесия и заведомо проигрышной ситуации, это может еще больше раздражать игрока, потому что со стороны это может выглядеть "эй, а почему конец игры? Так не честно!!!" Насчет идеи ход назад - уже куда более изящное и красивое решение, что-то в этом есть. Но в этом случае возникает проблема с уровнями на время, где ходы идут слишком быстро. Я посчитала эту проблему некритичной тогда, когда с ней столкнулась. Возможно, зря)
1) ИМХО для этого нужно иметь какой-нибудь математический инструмент как минимум -- в голове всё это держать очень сложно.
2) Можно внедрить в код игры журналирование (лог) записывающий ключевые действия (то есть те которые изменяют состояние системы пазла), проводить бетатестирование и анализировать логи -- наверняка найдется много разных вариантов прохождения, о которых дизайнер мог даже не думать (не думаю что стоит раскапывать Смайлов, но если ваш новый секретный проект является пазлом, то было бы полезно рассмотреть добавление данной возможности).
Кстати надо заметить что у вас действительно разнообразные пазлы, я сначала увидел 75 уровней и подумал там будут просто вариации нескольких, и что игра просто убивалка времени. Однако всё оказалось куда лучше. Но всё же недостаточно хорошо. Хотябы просто присутсвтие одного и тогоже визуального оформления постепенно делает игру скучной. Разнообразие должно быть во всём, не только в пазлах. Ещё должна быть какая-то цель. Конечно прохождение пазлов должно быть приятным само по себе, но должен быть какой-то мотивирующий фактор, который как бы структурирует действия игрока, то есть "я не просто вот тут пазлы решаю", а это как небольшое интересное путешествие/приключение, у которго есть причина и цель. Как реализовать? Ну это может быть сюжет (даже у тетрисов есть сюжет), может быть интерес исследования, ну ещё что-то такое, это вот вам нужно придумать
.Ещё, ящитаю, нужно делать различие направления "сложности" пазлов: первое -- это когда пазл вообще легкий, решается в пару действий, но они неочевидны, второе -- это когда пазл структурно сложен, хоть и состоит из большого количества простых действий. Первые задачи обычно на внимательность, на умение нестандартно мыслить, или даже скорей иногда нужно перестать концентрироваться на отдельных попытаках решения и посмотреть задачу целиков, то есть шире. Иногда игроку не хватает знания или опыта о механике/мире_игры, возможно следует пропустить задачу и посмотреть, может это неочевидную вещь можно рассмотреть в следующих пазлах более очевидно. Про решение вторых программисты обычно говорят что-то типа: здесь нужно использовать главный технический императив -- управление сложностью, то есть эксплуатируется умение игрока увидеть и выделить из общей картины конкретные детали, понять как они работают в отдельности и определить законы их взаимодействия между собой. Лучше если игроку в любой момент времени будет доступен набор пазлов из двух этих категорий: если не получается одно, можно сменить вид деятельности, иногда это помогает. Вообще в пазлах часто добавляют возможность отвлечся от решения и переключиться на исследование мира, ещё там всякая релаксирующая атмосфера.
Ну примеры можно привести Braid, The Talos Principle, The Witness (всё ещё делают) и т.д.
Вообще Braid хороший пример как можно сделать пазлы оригинальными и запоминающимися.
Вообще это хороший показатель: если со второго раза хорошо помнишь как решать пазлы, значит они оригинальны и "гармонично встроены" то есть как только я вижу его визуально, воображение сразу вытаскивает из памяти его решение. Остается жёсткая ассоциативная связь между визуальным видом и действием. Вроде есть такая техника запоминания даже, когда надо делать подходящие ассоциации с яркими визуальными образами (у кого приемущественно зрительная память) и это хорошо запоминается.
Воот, так что у вас большие перспективы с пазлами -- надо только чтобы игра давала больше возможностей как для создания пазлов так и для действий игрока, игровая вселенная, больше разного контента, 3д, ну и т. п.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Таким образом нужно либо дать игроку набор событий которые реанимируют систему из любого состояния (что сильно упростит игровой процесс)
Кстати, да, еще один из вариантов решения проблемы, искуственно сбалансировать это извне какими-нибудь бонусами, например... :side:
либо дизайнеру нужно очень внимательно отслеживать то какие события досупны игроку, учитывать возможные комбинации их применения, учитывать какие наборы событий будут нужны из вывода (или невывода) системы в победное состояние после применения предыдущих комбинаций событий.
1) ИМХО для этого нужно иметь какой-нибудь математический инструмент как минимум -- в голове всё это держать очень сложно.
:blush: С другой стороны есть какая то прелесть в том, что иногда игрок может находить решения, не ведомые создателю игры, многовариантность прохождения, это ж вроде плюс, а если я буду сильно ограничивать игрока, постоянно ведя его по рельсам, ... не факт, что ему это понравится. Хотя, в целом согласна, конечно, что продумывать надо по любому))...хотя бы в общих чертах. Но абсолютно всё предусмотреть в принципе не возможно.
2) Можно внедрить в код игры журналирование (лог) записывающий ключевые действия (то есть те которые изменяют состояние системы пазла), проводить бетатестирование и анализировать логи -- наверняка найдется много разных вариантов прохождения, о которых дизайнер мог даже не думать (не думаю что стоит раскапывать Смайлов, но если ваш новый секретный проект является пазлом, то было бы полезно рассмотреть добавление данной возможности).
А вот это у нас даже реализовано ведь
Но всё же недостаточно хорошо. Хотябы просто присутсвтие одного и тогоже визуального оформления постепенно делает игру скучной.
Хммм... я думала, что этого достаточно, ведь на каждом экране свой фон, и у смайлов разные цвета и типы. Мне думается, что для такой игры бОльшее разнообразие было бы уже излишком, и результат бы уже не стоит количества затраченных усилий...правда, у нас и сейчас усилий затрачено куда больше, чем надо было :laugh: :blush:
Ещё должна быть какая-то цель. Конечно прохождение пазлов должно быть приятным само по себе, но должен быть какой-то мотивирующий фактор, который как бы структурирует действия игрока, то есть "я не просто вот тут пазлы решаю", а это как небольшое интересное путешествие/приключение, у которго есть причина и цель. Как реализовать? Ну это может быть сюжет (даже у тетрисов есть сюжет), может быть интерес исследования, ну ещё что-то такое, это вот вам нужно придумать
.
Да, этот недостаток я знаю, в этой игре намеренно обошлась без сюжета, сделав упор на геймплей. Иногда я жалею об этом, кстати :S :pinch:
Ещё, ящитаю, нужно делать различие направления "сложности" пазлов: первое -- это когда пазл вообще легкий, решается в пару действий, но они неочевидны, второе -- это когда пазл структурно сложен, хоть и состоит из большого количества простых действий.
Ммм... не задумывалась над подобной структурой, интересная мысля :whistle:
Спасибо за советы и на добром слове ^__^
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
ага вот кстати отчасти и по этой причине не стала сильно париться с видеороликом - качай да смотри, бесплатно ведь, и там и туториал и все остальное.потенциальный игрок просматривает кучу игр и тратить много времени на ознакомление с одной из них он не может, тем более игра всеравно бесплатная, т.е. если заинтересовало то просто скачает посмотрит)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.


