Четверг, 28 Марта 2024, 20:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Как вам такая архитектура?
Как вам такая архитектура?
afqДата: Понедельник, 01 Июля 2019, 23:26 | Сообщение # 1
Разработчик
Сейчас нет на сайте
Я недавно создал такую программульку, которая подключает библиотеки, столько, сколько есть. github, здесь создаются программа и две библиотеки.
Например есть сишный движок. Код программиста выполнен в формате библиотеки, то есть есть функция init и функция рендер, в которые нужно вписать логику. При компиляции это будет компилироваться в библиотеки. Если проект будет очень большим, то библиотек будет ну очень много. Вроде бы упрощает кодирование, но когда много библиотек это нормально?
drcrackДата: Понедельник, 01 Июля 2019, 23:44 | Сообщение # 2
старожил
Сейчас нет на сайте
кому и зачем это может понадобиться, хотя бы в теории?
afqДата: Понедельник, 01 Июля 2019, 23:49 | Сообщение # 3
Разработчик
Сейчас нет на сайте
drcrack, сам код я написал для martuk, чтобы он посмотрел как на си пишется код. Я хотел написать нечто подобное. Я иногда обдумываю как создать код например для движка на c++ и си. И вот пример такой, например есть несколько уровней, пишешь свои файлы ( которые станут либами ), и в коде добавляешь вот такой код, он будет отвечать за то, на каком уровне будут какие либы загружены.
Код

add_level ( 0, "main_menu" );

В коде, пример который я привёл, ну который на github, там библиотеки загружаются все, которые есть в папке. В движке же надо будет загружать те, которые принадлежат уровню.
drcrackДата: Вторник, 02 Июля 2019, 00:03 | Сообщение # 4
старожил
Сейчас нет на сайте
нет, я говорю о каком-нибудь реальном кейсе использования
людям которые пишут движки оно не нужно, они сами все сделают с нуля и лучше
людям которые движки просто используют оно еще меньше нужно, т.к. все есть в движке
XakepДата: Вторник, 02 Июля 2019, 06:21 | Сообщение # 5
めちゃくちゃちゃ
Сейчас нет на сайте
странная идея, зачем делать динамическую линковку? слинковать все файлы находящиеся в папке можно и через обычный makefile или cmake, какой в этом смысл?
afqДата: Вторник, 02 Июля 2019, 13:23 | Сообщение # 6
Разработчик
Сейчас нет на сайте
Xakep, допустим у меня есть такая структура
Код

struct cycle {
    lib_init *linit;
    lib_run  *lrender;
    lib *lso;
    int size;
} *cycle;

В коде она инициализируется. И потом выглядит вот так. Заметь, в цикле рендер уже идёт отрисовка.
Код

// init
for ( int i = 0; i < cycle->size; i++ ) {
  cycle->linit[i]();
}
// render
while ( 1 ) {
  for ( int i = 0; i < cycle->size; i++ ) {
    cycle->lrender[i]();
  }
}

в цикле while выполняются все подключенные либы в простом цикле, то есть мне в код ничего вносить не надо, ничего генерировать не надо. Только этот код и сколько угодно либ.
XakepДата: Вторник, 02 Июля 2019, 14:15 | Сообщение # 7
めちゃくちゃちゃ
Сейчас нет на сайте
Так а какой смысл так делать, какую проблему это решает? Единственное где я вижу пользу от подобного - это если у тебя время компиляции слишком большое, но и то спорно, если архитектура выстроена нормальн + если использовать тот же cmake или/и ninja, то не весь код будет компилироваться, а только тот, в который были внесены изменения (на практике не совсем так конечно, потому-что этот код может трогать и другие файлы и они тоже будут комплироваться).
afqДата: Вторник, 02 Июля 2019, 16:45 | Сообщение # 8
Разработчик
Сейчас нет на сайте
Xakep, такое наверное подходит только для подключения плагинов к программе.
XakepДата: Вторник, 02 Июля 2019, 18:59 | Сообщение # 9
めちゃくちゃちゃ
Сейчас нет на сайте
Да, плагины это хороший юзкейс.
Форум игроделов » Программирование » C/C++ » Как вам такая архитектура?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг