вторник, 20 декабря 2011 г.

Отчёт № 3

  И так со столкновениями персонажа и бетонными блоками покончено. И казалось бы можно идти дальше, но корявое управление не давало мне покоя. Поэтому это отчёт о проблеме управления.
  Сразу хочу предупедить, что я веду блог не только для того чтобы описать текущие успехи в разработке, но ещё и для того чтобы потенциальных новичков научить быть изобретателями. Поэтому второй отчёт мог показаться слишком раздутым. Но на самом деле это нужно для того, чтобы как следует отследить сам процесс изобретения, ход мыслей, тоесть как до этого дойти и т.д. Впринципе процесс разработки это сплошное изобретательство и здесь со мной согласятса все опытные игростроители. Так как какждый проект, каждая игра уникальна и нет стандартного решения для всего. Постоянно приходится извращаться и придумывать что то новое, а прой и переизобретать "велосипед" заново. Многие стараются описать какую то изобретённую технологию, но тех кто пытается научить быть изобретателем очень мало. Может я сильно зарвался и у меня ничего не получится, но тем не мение я попытаюсь.
  И так, после небольшёго отступления от темы, я продолжаю описывать процесс разработки. Как я уже сказал, управление персонажем страшно раздражает тем, что при одновременном нажатии более одной клавиши, перс. слушается не совсем так как нада. И первая моя проблема это не механика какая то, а моё легкомысленное отношение к самой системе управления. Ну казалось бы, что там такого? Всего же четыре направления по которым можно двигаться. Ну поставь просто четыре условия на движение и всё. И это меня, и тормозило примерно дня четыре. Я пытался как можно проще собрать систему управления и у меня не получалось. Заставить перса двигаться так как хотелось именно тогда, когда хочешь напр. идти вперёд и не отпуская эту клавишу, нажать клавишу влево и немного пройтись влево, что бы обойти препятствие. Таже ситуация если перед персом бетонный блок и не отпуская клавишу "вперёд", хочется обойти. Но не получается, потому что по условию нажатия клавишь, направление "вперёд" приоритетнее направления "влево". И так получается, что одним управлениям мы угодили, а другим нет. Вот в каком порядке приоритета, находились направления:
  1. Вверх
  2. Вниз
  3. Влево
  4. Вправо
  И тут можно отследить, кому мы угодили такой записью, а кому нет. Если главное направление "Вверх" или "Вниз", то в роли второстепенных направлений "Вправо" и "Влево" эти годятся. Но если главными направлениями будут "Вправо" или "Влево", то ничего мы не получим. Перс как пытался (к примеру) идти влево, так и пытается, и ничего нельзя сделать. Ну на первый взгляд, всё просто, возьми да и поменяй местами "Вверх" и "Вниз" на Вправо" и "Влево". Но это тоже самое даст, одним угодили другим нет. И этой ерундой я страдал где то дня три, приэтом с увереностью в себе, что мол я нормальный программист и вот вот сейчас я всё сделаю. Короче говоря расслабился я. Игра вроди бы простая, да чё там, несколько условий и пойдёт как нада. А он всё не шёл и не шёл. И тут я начал в серьёз задумываться о каких то контроллерах по нажатию клавишь и о контроллерах движения. Если бы в первый день разработки, мне ктонибудь сказал бы, что я буду писать специальный контроллер для перемещения перса, то я не поверил бы ему. Так как думал, что всё будет просто, на раз два. И эта моя ошибка мне стоила четырёх дней мучений. При чём почти на пустом месте. Поэтому любой даже маленький проект, требует к себе уважение. Но я понял это позднее чем нужно. И начал воплощать свою идею управления с отслеживания нажатий клавишь.
  Нажатия клавишь, как оказалось далко не самое последнее дело в управлении персом. Это может звучать смешно, но тем не мение. Контроллер отслеживания, должен был иметь в себе два типа отслеживания.:
  1. Какая клавиша была нажата первой? Это первая важная информация. Такой подход делает очень вожную вещь, он относится ко всем клавишам одинаково. Тоесть нет приоритета, какая клавиша главнее. Ну если только небыло нажато несколько клавишь при первом нажатии, тогда приоритет просто необходим. Но это крайне редко происходит.
  И тут получается, такая выгода, что если мы какуюто клавишу нажали первой, то последующие дополнительные нажатия других клавишь, не оказывают никакого воздействия. А это даёт нам гарантию того, что при первом нажатии мы определяемся с основным направление движения персонажа и это направление не собьётся до тех пор, пока мы не отпустим клавишу соответствующую этому направлению. Всё, теперь можно для каждого направления начинать описывать альтернативные направения.
  2. Альтернативное направение это направление в котром может двигаться персонаж если движение по основному направлению не возможно. Тоесть у каждого главгого направения есть свои альтернативные и в случий нажатия соответствующих комбинаций, персонаж не растеряется. Ну а что бы не быть голословным, просьба взлянуть на видео, демонстрирующее этот контроллер.

 

О спрайтовой анимации я поведаю в следующих отчётах.

Комментариев нет:

Отправить комментарий