Чем движок отличается от фреймворка

Обновлено: 04.07.2024

Что выбрать для разработки фреймворк или CMS? Чем они вообще отличаются и какие преимущества и недостатки у фреймвоков и CMS.

Фреймворк от английского слова "каркас". Фреймворк - это надстройка над языком, набор библиотек. Хорошо отлаженных и прекрасно взаимодействующих между собой библиотек

CMS (Content Management System, система управления контентом)

CMS(ЦМС) – это, по сути, уже готовый сайт, который нужно донастроить под свои нужды.

Казалось бы, если фреймворк - это всего лишь набор библиотек, а CMS - это уже почти сайт, то к чему вообще этот глупый выбор? Но ведь если бы всё было так просто, то, очевидно, не было бы этой статьи и ты её не читал бы.

CMS значительно ускоряет разработку простого шаблонного сайта. У сайта сразу готова админка и её не надо писать отдельно, в отличии от разработки на фреймворке. Однако это скорость создания сайта достигается за счёт шаблонности, ограниченности или излишней универсальности CMS.

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

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

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

А Framework даёт полную свободу действий. За нас написали основу, фундамент, а дальше бери и твори. Но для качественной разработки на фреймворке необходимо обладать достаточным уровнем, чтобы не создавать откровенной непотребщины или, что ещё хуже, дырявого продукта.

Проверить есть ли среди 4 чисел хотя бы одно чётное и одно нечетное
Дано числа A B C D.Проверить,есть ли хотя бы там одно чётное И одно нечетноё.


Строка содержит одно слово максимальной и одно минимальной длины. Поменять их местами.
Строка содержит одно слово максимальной и одно минимальной длины. Поменять их местами. Помогите.

Вывести звонкие согласные, которые входят хотя бы в одно нечетное слово и не входят ни в одно четное
Все звонкие согласные, которые входят хотя бы в одно нечетное слово и не входят ни в одно четное.

Движок - это конструктор для пользователя, а фреймворк - конструктор для программиста. Словом это не одно и тоже. В общем виде так можно объяснить. elektrik-power, в общем "виде", это одно и тоже. Что фреймворк, что движок являются манипуляторами информации (IO). Но если фреймворк — конкретное понятие, то выражение "движок" можно применить ко многому, откуда такая конкретика про конструктор для пользователя?

возникает вопрос, ты движками пользовался когда нибудь ?

женя610, тогда Вы говорите о CMS, а не о движке. короче я понял, если движок написать самому то то он называется фреймворк. если движок написать самому то то он называется фреймворк. что есть для вас понятие движок? фреймворк - программный каркас для быстрой и эффективной разработки. женя610, тогда Вы говорите о CMS, а не о движке. автор топика, скорее всего, эти два понятия отождествляет. Boris01, и от меня. Фреймворк - программное ядро. А движок содержит в себе не только фреймворк (возможно разработанный самими же создателями движка), но и коды, написанные на этом фреймворке.

Сколько людей, столько мнений.
Веселит меня эта тема :)

kester, главное, чтобы ТС не спросил, что такое модуль, иначе вообще холивар пойдет)

Я не знаю что такое "движек" и вообще это понятие размыто. Некоторые считают под ним CMS, а некоторые функционал сайта.

Но фреймворк - это не то, чем может пользоваться человек без знаний или хотя бы с небольшими знаниями. Фреймворк - это как каркас с уже готовыми классами (библиотеками), которые можно эфективно применять для объектно ориентированой разработки.

MarlboroRed, то есть по вашему фреймворк может быть только объектно-ориентированным? MarlboroRed, то есть по вашему фреймворк может быть только объектно-ориентированным? то есть по вашему фреймворк может быть только объектно-ориентированным


Определить, есть ли среди трех заданных чисел хотя бы одно четное (хотя бы одно нечетное)
Даны три целых числа A, B, C. Определить, есть ли среди них хотя бы одно четное и хотя бы одно.

Фреймворк
У кого есть скрипты на фреймворки мне нужно для сайта

js фреймворк
с чего начать писать свой js-фреймворк? только не надо ответы типа есть уже jquery и тд. может.


Определить, есть ли среди трех чисел хотя бы одно чётное и хотя бы одно нечётное
Чётные и нечётные числа Дано три целых числа a, b, c. Определить, есть ли среди них хотя бы.


Определить, есть ли среди чисел хотя бы одно четное и хотя бы одно нечетное
Разбор 1)Можно создать 2 булевские переменные и каждое число проверять одним if-ом, если число.

Фреймворк CppCMS
Добрый день, форумчане! Подскажите, возможно ли через фреймворк CppCMS написать более-менее годный.

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

Прежде всего, игровой движок — это программный комплекс, который упрощает разработку игр, предоставляя вам набор необходимых для разработки инструментов. Из этого следует несколько простых фактов. Во-первых, движок совершенно необязателен, игру можно написать и без него на голом языке программирования. Во-вторых, движок не сделает крутую игру за вас. Но с ним работа пойдёт в десятки раз быстрее, так что я всем очень советую не писать велосипеды, а использовать готовое.

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

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

Касательно внутреннего устройства игровые движки делятся на:

  • Полноценное ПО — это такая специальная программа, которая может собрать игру воедино за вас, а вам предоставляет полноценный редактор.
  • Фреймворк — это набор полезных классов и функций, которые вы можете использовать при создании своей игры с нуля. Игру вам придётся собирать самостоятельно, но зато у вас будет больше контроля за процессом.

Если мы говорим о фреймворках, то игра пишется на том же языке, на котором написан фреймворк. Если же мы говорим о полноценном ПО, то программировать в них можно на:

Если говорить о лицензии, то тут тоже есть несколько вариантов:

  • Платные движки - за использование этих программ придётся платить, иногда даже каждый месяц.
  • Бесплатные для использования - эти движки вы можете спокойно скачать и использовать для разработки, но чтобы продавать игры, сделанные на нём, придётся отчислять процент владельцам движка.
  • Движки с открытым исходным кодом - эти движки вы можете спокойно скачать и использовать с минимумом ограничений.

Возможности, которые может предоставлять или не предоставлять игровой движок (список неокончательный):

  • Система уровней
  • Физика
  • Система частиц
  • Навигация
  • Двумерная анимация
  • Трёхмерная анимация
  • Карты тайлов
  • Редактор местности (terrain)
  • Воспроизведение звука
  • Источники освещения и тени
  • Шейдеры
  • Диалоговая система

Чем больше возможностей предоставляет движок, тем сложнее и дольше им пользоваться из-за огромного количества кнопочек и удлинённого времени компиляции, так что подбирать движок лучше не из соображений «чтобы умел побольше», но "взять достаточно для моих нужд — и не больше".

Ну и последнее разделение, которое относится к движкам лишь косвенно — это их дата создания и популярность. Чем раньше был создан движок и чем популярнее он, тем легче вам будет с ним работать, поскольку создатели движка наверняка уже починили огромное количество багов (да, это тоже важно, в игровых движках могут быть баги и их может быть много), а в сети вы сможете найти очень много обучающих материалов.

Игровой мир состоит из игровых объектов (GameObject). К этой базовой категории можно практически отнести всё, что находится в игре, в том числе игрока, его инвентарь, камеру, землю под ногами, каждый отдельный кустик и даже небо. Не стоит думать, что все объекты обязательно должны быть видимы — всякие триггеры (объекты, вызывающие события при прикосновении), барьеры, источники освещения и даже части интерфейса являются такими же объектами. Все игровые объекты обладают несколькими базовыми свойствами: положение в пространстве (Transform), включены ли они (Active), какой у них родительский объект и есть ли он (Parent).

Игровые объекты так же могут быть дополнены поведением (Behaviour или Component). Поведение — это отдельный код, который привязан к объекту и выполняется при определённых условиях. Условия могут быть самыми разными, а количество поведений, привязанных к объекту, ничем не ограничено. В таком коде вы например можете двигать объект по движению мыши или перекрашивать его цвет. А ещё у каждого поведения могут быть свои отдельные параметры (выраженные в переменных).

Например, мы можем создать для картинки поведение «Персонаж», у которого будут очки здоровья и возможность прыгать. И когда персонаж падает со слишком большой высоты, эти очки здоровья у него отнимать.

Помимо своих собственных поведений в игровом движке есть несколько стандартных типов поведений: форма столкновения (Bounding Box/Sphere/Capsule/…), физическое тело (Rigidbody), отрисовщик (Renderer), камера (Camera), создатель частиц (Particle Manager), аниматор (Animator) и ещё десятки других типов. Всеми этими поведениями вы можете управлять на лету.

Очень важным концептом является событие (Event). Это сигнал, который возникает при соблюдении каких-то условий. Поведения объектов в игре могут порождать эти события и реагировать на них. Например, столкновение — это событие, причём одно из самых частых по использованию. Именно на событиях строится основной игровой процесс, разработчик игры может навешивать действия (Action) одних поведений на события других и так, например, делать кнопки, рычаги, точки сохранений и так далее.

Но это и не единственный способ заставить игру работать, ещё есть раздел Update, в который можно написать код и который будет выполняться постоянно, в каждый игровой тик (tick). Тик — это самая минимальная единица времени, которую игра может обеспечить. Обычно тик составляет 16 миллисекунд, но если у вас плохо с оптимизацией, то он увеличится. Без этой функции не обойтись, и некоторые вещи, например плавное передвижение и проверка столкновений, пишутся именно там. Но чем меньше кода написано в этой секции — тем лучше.

Место, в котором находятся игровые объекты, называется уровень или сцена (Level или Scene). Уровни можно менять в любой момент, а в некоторых движках ещё и совмещать между собой. Ваши игровые объекты будут распределены по уровням, чтобы друг другу не мешать. Например это будут локации и их наполнение. Но определённые универсальные для всех уровней объекты, например главный персонаж или интерфейс, лучше хранить в отдельном месте.

В вашем проекте должна быть отдельная папка, в которой вы будете хранить сохранённые объекты (Prefab). Любой объект в игре вы можете сконструировать всего один раз, а затем сохранить в эту папку для дальнейшего, в том числе многократного, использования. Например, это могут быть деревья или враги. Во время игры вы можете создать любое количество объектов из этой папки, но лучше не переборщить и не использовать тысячи объектов, иначе движок начнёт лагать.

И последнее, про графику. Объекты в игре могут выглядеть самым разным способом. И дело даже не в отдельный настройках, а в самом способе их отображения на экране. Это могут быть 2D-объекты, например различные простейшие геометрические формы (Shape) или картинки (Sprite). А могут и 3D-объекты, которые состоят из 3D-модели (Mesh). Все видимые объекты в игре обязаны иметь материал (Material) — набор параметров, влияющий на отображение объекта. Такими параметрами могут являться текстуры (Texture), цвета (Color) и обычные числа (Float). Некоторые движки дают доступ ограниченный доступ материалу, давая лишь задать текстуру и цвет окрашивания, другие же дают полный доступ. В основе материала лежит шейдер (Shader) — особая программа, которая проводит математические вычисления и проецирует объекты в пространстве на плоский экран камеры.

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

Construct 3 — настоящий ветеран индустрии. Используется для создания 2D-игр и достаточно популярен. У движка больше настроек, с недавних пор есть версия для браузера, очень много примеров и шаблонов. Логика на визуальном интерфейсе. Но большинство возможностей скрыто за крайне дорогой лицензией. Бесплатная версия ограничена.

Stencyl — ещё один движок для создания 2D-игр. Имеет открытый исходный код и и приятный интерфейс. Логика на визуальном интерфейсе. Мало известен, но полностью бесплатен (платно только публикация на ПК).

GDevelop — другой движок для создания 2D-игр, набирающий огромную популярность. Так же имеет открытый исходный код и приятный интерфейс. Логика на визуальном интерфейсе. Полностью бесплатен.

RPG Maker — очень популярный движок для создания пиксельных RPG. Именно для RPG движок и заточен, но он подойдёт и для похожих жанров. Много встроенных ассетов и настроек для персонажей. Есть бесплатный 30-дневный пробник, дальше придётся платить.

Game Maker Studio — очень популярный движок для разработки 2D-игр. Позволяет программировать логику на адаптированном Lua и даёт много возможностей. Есть бесплатный 30-дневный пробник, дальше придётся платить.

Ren’Py — самый популярный движок визуальных новелл, на котором написаны тысячи новелл. Использует Python в качестве языка программирования логики. Полностью бесплатен

Unreal Engine - настоящий гигант, используемый профессионалами в индустрии кино и игр. Имеет самую лучшую графику на рынке, кучу инструментов внутри и ежемесячно раздаваемые бесплатные ассеты на любой вкус. В качестве программирования используется визуальный интерфейс, но есть возможность писать и на C++. Инструмент для профессионалов, поэтому очень просто что-то испортить. Использование бесплатно, но с каждой проданой игры надо отчислять процент.

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

Phaser - набирающий популярность фреймворк для разработки игр на Javascript.

libGDX - завоевавший доверие фреймворк для разработки игр для Java.

SFML - популярный фреймворк для разработки игр на C++

Что ж, теперь вы знаете, как выбрать движок и какие опции доступны. А теперь дерзайте! Скачивайте, тыкайте, экспериментируйте. На сайтах движков вы можете найти очень много шаблонов и примеров, а на YouTube (особенно английской его версии) можно найти буквально сотни и иногда даже тысячи гайдов по тем или иным сторонам разработки. Ждём ваши работы!

sim3x

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

1. Если тебе нужно видеть промежуточный вариант, то фреймворки

Ni55aN

Движок: меньше времени и знаний
Библиотека: больше времени и знаний

shpaker

Ni55aN

A. Shpak: конечно, и на движке можно столько костылей нахвататься, что по времени выйдет слишком много

ThePyzhov

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

GavriKos

Для того, чтобы адекватно ответить на ваш вопрос, нужно:
1) Знать ваши скилы в программировании
2) Знать что за команда собралась
3) Знать хоть что то о самой игре, целевых платформах.

GavriKos

angru

я не знаю что лучше движок или фреймворк, фреймворк может оказаться слишком сложно, а движок неинтересно.

но самое крутое что видел для поиграться - love2d, это фреймворк, со скриптами на lua, но это чисто поиграться, потому что только для десктопа. хотя вот они релизнули новую версию и там есть ios/android, это уже очень круто.

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

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

А с простыми библиотеками советую не связываться - потратите немало времени на обучение.

Читайте также: