Разработка игры на Codeigniter

У меня довольно неплохой опыт работы с PHP (около 5 лет опыта работы с некоторыми веб-сайтами и двумя браузерными играми). Это первый раз, когда я действительно возился с ядром движка вместо того, чтобы просто разрабатывать плагин или модуль для чего-то вроде Joomla. У меня большой опыт работы с другими объектно-ориентированными языками (такими как Java).

Мой вопрос в том, что я обнаружил, что разрабатываю сайт во многом как обычный сайт, но я хочу, чтобы он был более гибким, чем это, и я ' Я не уверен, что «делаю все правильно». В каком-то смысле мне кажется, что я создаю половину CMS.

Например, у меня есть главная страница, настроенная через контроллер, который контролирует, какие представления отображаются в данный момент. Главная страница просмотра выглядит так:

<?php $this->load->view("headerview"); ?>
<?php $this->load->view($contentview); ?>
<?php $this->load->view("footerview"); ?>

в самом файле просмотра (так что я могу динамически загружать контент, остальные на самом деле не меняются). Это мой первый вопрос, так как ВСЕ управление осуществляется через мой основной файл управления, это правильно?

Моя функция index устанавливает mainview как представление, которое будет загружено с переменными для «contentview» и «gameview». Когда «contentview» - игра, у нее есть разделенная панель, один показывает статистику игроков и тому подобное, а другой показывает, на какой странице игрок в данный момент находится (торговый магазин, в битве, исследование мира и т. д.). То, что здесь показано, определяет переменная «gamecontent» (также переданная в «главный» контроллер).

<?php $this->load->view("menubar"); ?>
<?php $this->load->view($gamecontent); ?>

Короче говоря, вся обработка представлений в настоящее время выполняется в основном контроллере, то есть в одном контроллере.

$data['title'] = "Experimental Page";
$data['maincontent'] = "gameview";
if($page == 1) {
    $data['gamecontent'] = "townview";
} else if ($page == 2) {
    $data['gamecontent'] = "merchantview";
} else if ($page == 3) {
    $data['gamecontent'] = "explorationview";
} else if ($page == 4) {
    $data['gamecontent'] = "hospitalview";
} else if ($page == 5) {
    $data['gamecontent'] = "fightview";
} else if ($page == 6) {
    $data['gamecontent'] = "adminview";
}

$this->load->helper(array('form','url'));
$this->load->library('form_validation');
$this->load->view('mainview', $data);

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

Моя цель - (надеюсь) разделить контроллеры так, чтобы каждый выполнял отдельные игровые функции, такие как исцеление, борьба, исследование и т. д. и разделено так же, как и мои модели (пользователь, мобы, предметы и т. д.).

Кто-нибудь может помочь мне понять, как правильно организовать этот проект?

6
задан Organiccat 14 December 2010 в 00:57
поделиться