Roguelike с зомби и прочей нечистью.
40 19 120
14
Я как всегда пропал, проект пока замер, хотя с последнего сообщения кое-чего и прибавилось. Сейчас увлекся графоном опять, пилю вот такое
Загруженные файлы
14
Кстати я еще живой )
Сейчас проект переписан на с++, получил z уровни и ogl рендер. Ясно дело никто ничего уже не ждет, просто решил донести, что помаленьку дело идет. Возможно скоро обновлю шапку
14
alexprey:
Pray_AD, космосим уже есть, тот же Space Engine
Так и Cataclysm DDA уже есть, суть в исполнении ну и в самом процессе, конечно же.
Предлагаю обсудить представление игровых объектов
3 1 141
29
В зависимости от того, что ты хочешь. Я использую такую логику:
 // Какой то базовый класс, которые отвечает онли за характеристики объекта, можно экстендить и т.д.
class GameObject {
    // Тут список поведений
    private IList<Type> objectBehaviours;
    private IList<IGameObjectBahaviour> objectBehaviourInstances;
    // Инстанцируем поведения
    private void InitializeBehaviour() {
         objectBehaviourInstances = objectBehaviours
              .Where(x => x.Implements(IGameObjectBehaviour))
              .Select(x => Activator.Create(x, new[] {this}))
              .ToList();
    }

    // Вызываем поведения
    public void Damage(float damage) {
           // меняем характеристики
           // ....
           // и вызываем обработчики
           objectBehavioursInstances.Foreach(x => x.Damage(damage));
    }
}

// Интерфейс определяющий какое либо поведение игрового объекта
interface IGameObjectBehaviour {
  GameObject Current { get; }

  void OnDamage(...);
  void OnDeath(...);
  void OnStart(...);
  void OnEnd(...);
  void OnTick(...); 
  // и т.д.
}
Ну вот как то так.
ПС. Кажется я осознал для чего можно использовать Injection
14
Doc:
Всё кроме 1 бред, есть интерфейс Entity, у которого есть методы update итд итп, от него все наследуется, не нужно мудрить. Если нужна поддержка скриптов она реализуется конкретно в объекте. Типичная новичковская ошибка пытаться все сделать супердуперуниверсальным.
Я тоже так считаю, надо посильнее выделить в тексте оценку каждого метода, просто решил привести все, что придумалось, 2 3 определенно слабее, но тем не менее они используются, например система флагов взята из DwarfFortress/Canaclysm.
Не знаю почему там выбран именно этот способ, вообще качество кода в этих проектов не лучшее да и решения, но сами проекты прекрасны
29
Всё кроме 1 бред, есть интерфейс Entity, у которого есть методы update итд итп, от него все наследуется, не нужно мудрить. Если нужна поддержка скриптов она реализуется конкретно в объекте. Типичная новичковская ошибка пытаться все сделать супердуперуниверсальным.