Проектирование таблицы для типов местности (биомов) в базе данных | DevBlog_1

biom sql create

Для проектирования таблицы в базе данных для типов местности (биомов) учитывая нужные нам характеристики, нам потребуется структура данных, которая вмещала бы всю эту информацию. Вот созданная мной структура таблицы для этой цели:

CREATE TABLE biomes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    danger_level_text VARCHAR(50),
    danger_level INT,
    survival_difficulty_text VARCHAR(50),
    survival_difficulty INT,
    occurrence_rate DECIMAL(5,2),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Пояснения к структуре таблицы:

  1. id: Уникальный идентификатор биома.
  2. name: Название биома.
  3. description: Описание биома.
  4. danger_level_text: Текстовое описание уровня опасности биома.
  5. danger_level: Числовое значение уровня опасности (от 1 до 10).
  6. survival_difficulty_text: Текстовое описание сложности выживания в биоме.
  7. survival_difficulty: Числовое значение сложности выживания (от 1 до 10).
  8. occurrence_rate: Процентная частота встречаемости биома на карте.
  9. created_at: Дата и время создания записи.
  10. updated_at: Дата и время последнего обновления записи.

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

Реализация на CodeIgniter 4

Для реализации был создан файл миграции, в котором содержался такой код:

<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateBiomesTable extends Migration
{
    public function up()
    {
        $this->forge->addField([
            'id' => [
                'type' => 'INT',
                'constraint' => 5,
                'unsigned' => true,
                'auto_increment' => true,
            ],
            'name' => [
                'type' => 'VARCHAR',
                'constraint' => 100,
            ],
            'description' => [
                'type' => 'TEXT',
            ],
            'danger_level_text' => [
                'type' => 'VARCHAR',
                'constraint' => 50,
                'null' => true,
            ],
            'danger_level' => [
                'type' => 'INT',
                'constraint' => 2,
                'null' => true,
            ],
            'survival_difficulty_text' => [
                'type' => 'VARCHAR',
                'constraint' => 50,
                'null' => true,
            ],
            'survival_difficulty' => [
                'type' => 'INT',
                'constraint' => 2,
                'null' => true,
            ],
            'occurrence_rate' => [
                'type' => 'DECIMAL',
                'constraint' => '5,2',
            ],
            'created_at' => [
                'type' => 'DATETIME',
                'null' => true,
                'default' => null,
            ],
            'updated_at' => [
                'type' => 'DATETIME',
                'null' => true,
                'default' => null,
                ]
        ]);
        $this->forge->addPrimaryKey('id');
        $this->forge->createTable('biomes');
    }

    public function down()
    {
        $this->forge->dropTable('biomes');
    }
}

Ну и как следствие мы получили в таблице структуру и готовый каркас для заполнения всех  биомов, которые могут быть на карте игрового мира. Какое в этой таблице есть преимущество?

  • Можно по примеру и структуре добавлять любое количество биомов даже когда уже игра будет работать и в нее будут играть
  • Можно без особого труда для каждой генерации мира  (каждый вайп — обнуление игровой карты и всех данных игроков) менять % количества этого биома на карте
  • Можно добавлять любое количество полей, которые могут со временем понадобиться в игровом мире или логике игры

Данные по биомах

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *