Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.01.2009, 01:38
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 1  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
По умолчанию Как лучше двигать объекты в игре?

Космическая стрелялка. Типа там кораблик, астероиды, может ещё кораблики. Для каждого объекта есть координаты и скорость.

Так вот, перемещение этих объектов можно сделать двумя способами:

1. Объект перемещается сам. Т.е. у него есть некий метод move, и движок игры в цикле перебирает все объекты и дёргает у них этот метод.

2. Объекты перемещает движок. Т.е. он в цикле перебирает объекты, берёт их координаты и скорости, высчитывает новые значения и ставит объект на новые координаты.

Распишите пожалуйста плюсы и минусы каждого подхода.

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

Кстати пока это писал, пришла идея гибридного варианта: объекты двигаются сами, но ещё обладают методами, которые возвращают рассчётные координаты и скорость. Движок их проверяет, и если всё ок, то вызывает move.

В общем жду ваших мнений.
__________________
тонкий тролль, осеянный благодатью

Старый 07.01.2009, 02:49
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 2  
Ответить с цитированием
Chas
[+1 14.08.08]
[+1 20.08.08]
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
второй вариант чуть хуже:
1) захламляется и становится слишком объемным класс сцены
2) при переборе объектов сцены приходится как-то определять тип объекта, и в зависимости от типа объекта выполнять конкретное действие, а в первом варианте надо просто вызвать функцию move, которая является общей (базовой) для всех элементов сцены.

а вообще не стоит зацикливаться на таких мелочах. Часто напишешь код, а потом думаешь: "нет, фигня получилась, надо переделать". И начинаешь переименовывать функции, переносить функционал из одного класса в другой, разбивать функцианал в разные элементарные классы. Это все ненужно. Это топтание на месте. Как первый раз написали - так пусть и будет.
__________________
~
Never trouble trouble till trouble troubles you!

Старый 07.01.2009, 02:57
TERRORist вне форума Посмотреть профиль Отправить личное сообщение для TERRORist Найти все сообщения от TERRORist
  № 3  
Ответить с цитированием
TERRORist
 
Аватар для TERRORist

блогер
Регистрация: Jun 2005
Адрес: RU
Сообщений: 1,540
Записей в блоге: 12
проверял еще на AS2 - если скажем хранить объекты в массиве а не перебирать, то второй способ чуть быстрее. но незначительно так что можно не учитывать.

а вот как в AS3 будет хз

Старый 07.01.2009, 03:05
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 4  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Chas, это не топтание на месте, а рефакторинг - очень даже нужный процесс. Просто я предпочитаю проводить его до того, как начинаю писать код

Насчёт типов объектов пока думаю.

TERRORist, что вы имеете в виду? Я собираюсь хранить объекты в массиве и перебирать этот массив.
__________________
тонкий тролль, осеянный благодатью

Старый 07.01.2009, 03:19
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 5  
Ответить с цитированием
Chas
[+1 14.08.08]
[+1 20.08.08]
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
второй способ быстрее, только если у тебя один/два типа объектов. Если у тебя их десять?

2GAIKER: Рефакторингом можно заниматься неделями. Придумывание архитектуры неделями без написания фактического кода часто является оправданием собственной лени. В данном случае является не слишком актуальным какой способ выбрать (у вас тысячи объектов?). Можно просто кинуть монетку.
__________________
~
Never trouble trouble till trouble troubles you!

Старый 07.01.2009, 03:28
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 6  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Chas, в большинстве случаев написание фактического кода без придумывания архитектуры неделями приводит к тому, что приходится всё сносить и начинать заново, затратить те же недели на придумывание архитектуры, но потеряв впустую то время, которое ушло на первый вариант.

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

Старый 07.01.2009, 04:16
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 7  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
ну я думаю вы знакомы с шаблоном mvc помоему отличный вариант для игры. А ваши варианты они каждый по своему хороши, но тут говорят что мол могут быть всякие проблемы с разными поведениями для разных обьектов. для описания этих разностей может отлично подойти один из столпов ооп - полиморфизм.

Ну если честно. то вот вам мой совет. Если для самообучения. то подумайте над архитектурой 30 минут. потом попейте чаю и еще раз взгляните на план. поправьте и начинайте писать. Идеал вы не напишите даже если неделю будете трудится над описанием и тд и тп. По ходу дела вы будете сами видеть как можно было бы сделать лучше. что то исправите по ходу(рефакторинг необязательно надо делать в конце проекта), что то просто возьмете на заметку. Совершенные вами ошибки, ну при условии что вы их найдете, увидите, будут для вас лучшим обучением. тут только практика.

Я свой 3д движочек 5 раз переписывал. Только сейчас я довел все до уровня когда мне почти все нравится. главное самокритика.

ну и поповоду плана. такие планы к концу проекта обрастают всякими добавками. и от того что было в начале врятли что то останется. нужно быть достаточно опытным чтобы создать сразу хороший план и архитектуру. у меня был пример, когда я планировал одну программку, намечалось около 18 классов, сейчас классов 43 и проект еще не закончен.

Старый 07.01.2009, 12:30
insected вне форума Посмотреть профиль Отправить личное сообщение для insected Найти все сообщения от insected
  № 8  
Ответить с цитированием
insected
 
Аватар для insected

Регистрация: Jun 2006
Сообщений: 164
Имхо, тест-код-рефакторинг, тест-код-рефакторинг....

Старый 07.01.2009, 22:21
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Ну, зато если написать этот движок грамотно - его можно будет использовать потом снова в другом проекте. А если писать для каждого свой move() - при деться писать все с 0...
Тут действительно монетка.

Старый 08.01.2009, 01:40
insected вне форума Посмотреть профиль Отправить личное сообщение для insected Найти все сообщения от insected
  № 10  
Ответить с цитированием
insected
 
Аватар для insected

Регистрация: Jun 2006
Сообщений: 164
А надо ли с первой игры сразу зарубаться в такие дебри? Мне кажется лучше сначала попорхать как бабочка с одного аспекта ria разработки на другой и понять соль каждого, мало ли с чем придется потом работать, не факт, что в геймдеве...

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:56.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.