📰 Title: | Comfy | 🕹️ / 🛠️ Type: | Tool |
---|---|---|---|
🗃️ Genre: | Development | 🚦 Status: | 04. Released (status) |
🏷️ Category: | Development ➤ Framework & Tool ➤ Game Framework | 🌍️ Browser version: | |
🔖 Tags: | Development; 2D engine; Framework; RAD; No UI; Multi-platform; Rust; Rendering; Audio system; Particle system; Trails system | 📦️ Package Name: | |
🐣️ Approx. start: | 2023-08-06 | 📦️ Arch package: | |
🐓️ Latest: | 2023-10-21 | 📦️ RPM package: | |
📍️ Version: | Latest: 0.2.0 / Dev: 0897085 | 📦️ Deb package: | |
🏛️ License type: | 🕊️ Libre | 📦️ Flatpak package: | |
🏛️ License: | MIT | Apache 2.0 | 📦️ AppImage package: | |
🏝️ Perspective: | Third person | 📦️ Snap package: | |
👁️ Visual: | 2D | ⚙️ Generic binary: | |
⏱️ Pacing: | Real Time | 📄️ Source: | |
👫️ Played: | Single | 📱️ PDA support: | |
🎖️ This record: | 🕳️ Not used: | ||
🎀️ Game design: | 👫️ Contrib.: | goupildb | |
🎰️ ID: | 16362 | 🐛️ Created: | 2023-10-22 |
🐜️ Updated: | 2023-10-24 |
[en]: | A libre, multi-platform 2D game engine initiated by the LogLog Games studio for its own needs, and inspired by macroquad, raylib, Love2D and others. It is built in Rust, and aims to be ergonomic, high-performance and easy to use, while covering the majority of common use cases. It doesn't aim for beginner-friendliness, but rather for productive, ergonomic APIs. It notably features rendering for sprites, text and shapes, 2D lighting with HDR, tonemapping and bloom, a simple audio system, a 2D camera, a particle system, a custom-mesh trail system (aka retinal persistence of the rapid movement of an object such as a sword) with scrolling texture and many other utilities for common tasks. | [fr]: | Un moteur de jeu 2D libre et multi-plateforme initié par le studio LogLog Games pour ses besoins qui s'est inspiré de macroquad, raylib, Love2D et d'autres. Il est construit en Rust, et s'est fixé pour objectif d'être ergonomique, performant et facile à utiliser, tout en couvrant la majorité des cas d'utilisation courants. Il ne vise pas la convivialité pour les débutants, mais plutôt des API productives et ergonomiques. Il fournit notamment un rendu pour les sprites, le texte et les formes, un éclairage 2D avec HDR, tonemapping et bloom, un système audio simple, une caméra 2D, un système de particules, un système de traînées au maillage personnalisé (aka persistance rétinienne du mouvement rapide d'un objet tel qu'un sabre) avec texture défilante et bien d'autres utilitaires pour les tâches courantes. |
---|
💡 Lights on: | 🦺️ Work in progress: | ||
---|---|---|---|
📰 What's new?: | 💥️ New | New version published (to be updated): | |
🎨️ Significant improvement: | 🚧️ Some work remains to be done: | ||
🕳️ Not used2: | 👔️ Already shown: |
🦝️ From Users: GameFromScratch (202310),
🏡️ Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos t(202xxx) gd(202xxx) gu(202xxx) r(202xxx) lp(202xxx) ht(202xxx) ht[fr](202xxx) ht[de](202xxx) ht[ru](202xxx) ht[pl](202xxx) ht[cz](202xxx) ht[sp](202xxx) ht[pt](202xxx) ht[it](202xxx) ht[tr](202xxx)] [WIKI] [FAQ] [RSS] [Changelog 1(release notes) 2(no info) 3]
💰 Commercial: (empty)
🍩️ Resources
• Showcase(Some examples of games designed with Comfy): [Steam (nanovoid: Not yet released)] [Steam (BITGUN Survivors: Not yet released)]
🛠️ Technical informations
[PCGamingWiki] [MobyGames] [Comfy (examples)] [Showcase]
🐘 Social
Devs (Comfy Team 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
Devs (LogLog Games 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Discord] [Interview 1(202xxx) 2(202xxx)]
Devs (Jakub Arnold (darthdeus) 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
The Project: [Blog] [Chat] [Forums] [mastodon] [PeerTube] [YouTube] [PressKit] [Lemmy] [reddit] [Discord]
🐝️ Related
📦️ Misc. repositories
[Repology] [pkgs.org] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage (author's repo)] [Snap] [PortableLinuxGames]
🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]
🕊️ Source of this Entry: [GameFromScratch (20231019)]
🐘 Social Networking Update (on mastodon)
🛠️ Title: Comfy
🦊️ What's: A libre 2D game engine
🏡️ https://comfyengine.org/
🐣️ https://github.com/darthdeus/comfy
🔖 #LibreGameEngine #Rust
📦️ #Libre
📖 Our entry: http://www.lebottindesjeuxlinux.tuxfamily.org/en/online/lights-on/
🥁️ Update: 0.2.0
⚗️ Code improvement 🚀️
📌️ Changes: https://comfyengine.org/blog/release-v0-2/
🐘 From: https://mastodon.gamedev.place/@GameFromScratch/111262027070183420
📶️ https://github.com/darthdeus/comfy/releases.atom
🦝️ https://www.youtube.com/embed/1w9f2-pyHtc
🕶️ The engine logo (this engine has no UI).
Comfy is a libre, multi-platform 2D game engine initiated by the LogLog Games studio for its own needs, and inspired by macroquad, raylib, Love2D and others. It is built in Rust, and aims to be ergonomic, high-performance and easy to use, while covering the majority of common use cases. It doesn't aim for beginner-friendliness, but rather for productive, ergonomic APIs. It notably features rendering for sprites, text and shapes, 2D lighting with HDR, tonemapping and bloom, a simple audio system, a 2D camera, a particle system, a custom-mesh trail system (aka retinal persistence of the rapid movement of an object such as a sword) with scrolling texture and many other utilities for common tasks.
📕🐧"A libre 2D game engine"🐧📕
Comfy is a fun 2D game engine built in Rust. It's designed to be opinionated, productive, and easy to use. It uses wgpu and winit, which makes it cross-platform, currently supporting Windows, Linux, MacOS and WASM (iOS and Android support planned soon).
Inspired by macroquad, raylib, Love2D and many others, it is designed to just work and fill most of the common use cases.
The ultimate goal of comfy is to do the obvious thing as simply as possible without unnecessary ceremony. If something is annoying to use, it is a bug that should be fixed. We're not necessarily aiming at beginner friendliness, but rather productive and ergonomic APIs. If you're a beginner, comfy should be easy to pick up, but it might not be as polished as some of the other alternatives. The goal of comfy is ultimately not polish, cleanliness of API, clean design, type safety, extensibility, or maximum features. It's an engine that gets out of your way so you can make your game.
There is nothing that fundamentally prevents comfy from becoming a 3D engine, but the last thing we want is to try to fight rend3 or bevy in terms of PBR accuracy or skeletal animations. Comfy is not fighting against Unreal Engine 5. It would be nice if simple stylized 3D games were ultimately possible, but we want to get all of the basic building blocks for 2D first. Some internals of comfy (batching and z-sorting) will need to be re-implemented to allow for this and ultimately more performant rendering techniques, but this should not happen at the cost of API clarity and ergonomics for most games.
Features
☑ Simple and productive API.
☑ Immediate mode rendering for sprites, text and shapes with automatic batching. If you want to draw a circle, you call a function draw_circle.
☑ 2D lighting with HDR, tonemapping and bloom.
☑ Built-in support for z-index, meaning you don't have to worry about the order of your draw calls.
☑ egui support built in.
☑ Parallel asset loading with support for most image and audio formats.
☑ No complex ECS or abstractions to learn. Just build your game and let comfy get out of your way.
☑ Simple audio using kira. If you want to play a sound, you call a function play_sound.
☑ Simple 2D camera.
☑ Particles, both simple API for individual particles & systems with lots of options.
☑ Trails with a custom mesh & scrolling texture.
☑ Text rendering (currently using egui).
☑ Lots of utilities for common tasks.
Design goals & philosophy
☑ Heavy focus on ergonomics and productivity.
☑ No magic. The code does what it looks like it does.
☑ Targeted at simple games, currently only 2D.
☑ Opinionated and useful defaults.
☑ Simple immediate mode APIs for almost everything.
☑ Exposed internals for when you need more. Almost all struct fields are public, comfy doesn't keep things away from its user.
☑ Reasonable compile times. Comfy is slower to compile than macroquad, but we want to avoid things getting out of hand. End users are not going to be required to use any proc macros to use comfy.
☑ Global variables are nice. Comfy uses a lot of them.
☑ Typing less is nice. Comfy has a single context object that gets passed around everywhere.
☑ Constraints are nice. Comfy wants to be used for a lot of games, but not all of them.
☑ RefCell's are nice. Comfy uses them a lot to work around partial borrows. We tried doing things without them multiple times, it was more painful.
Non-goals
☐ AAA 3D support. While it's entirely possible to extend the renderer to handle 3D, this was intentionally not done yet. There is a lot of complexity that comes with 3d models, materials, skeletal animations, etc. Comfy may grow to support simple 3d games in the future, but it is extremely unlikely it'll ever attempt to be competitive with big 3D engines. We want to make sure that the stuff we have works well and is usable before adding lots more complex features.
☐ ECS based engine. While comfy does embed hecs and provides some helpers for using it, it is by no means required or even optimal for most cases.
☐ Modularity. Comfy is not a modular engine. It's an opinionated toolkit with defaults that make sense for most games. There is no intention of having a plugin system or the ability to replace wgpu with something else.
☐ Maximum performance. Comfy is not designed to be the fastest engine out there. There are many tradeoffs made for the sake of ergonomics and ease of use, some of which affect performance. If you're looking for the fastest way to draw a million quads, comfy is not for you. If however you have a legitimate use case where the performance is not good enough, please open an issue. There is a lot of low hanging fruit with respect to performance, but as the development is driven by real world usage, unless something shows up in a profiler in a game, it's unlikely to be optimized further.
Un moteur de jeu 2D libre, par la Comfy Team, initié par le studio LogLog Games & Jakub Arnold (darthdeus).
En Rust et WGSL.
Comfy est un moteur de jeu 2D libre et multi-plateforme initié par le studio LogLog Games pour ses besoins qui s'est inspiré de macroquad, raylib, Love2D et d'autres. Il est construit en Rust, et s'est fixé pour objectif d'être ergonomique, performant et facile à utiliser, tout en couvrant la majorité des cas d'utilisation courants. Il ne vise pas la convivialité pour les débutants, mais plutôt des API productives et ergonomiques. Il fournit notamment un rendu pour les sprites, le texte et les formes, un éclairage 2D avec HDR, tonemapping et bloom, un système audio simple, une caméra 2D, un système de particules, un système de traînées au maillage personnalisé (aka persistance rétinienne du mouvement rapide d'un objet tel qu'un sabre) avec texture défilante et bien d'autres utilitaires pour les tâches courantes.
Comfy est un moteur de jeu 2D amusant construit en Rust. Il a été conçu pour être ergonomique, performant et facile à utiliser. Il utilise wgpu et winit, ce qui le rend multiplateforme, supportant actuellement Windows, Linux, MacOS et WASM (le support iOS et Android est prévu prochainement). Inspiré par macroquad, raylib, Love2D et bien d'autres, il est conçu pour fonctionner et remplir la plupart des cas d'utilisation courants.
Le but ultime de comfy est de faire une chose évidente aussi simplement que possible sans cérémonie inutile. Si quelque chose est ennuyeux à utiliser, c'est un bogue qui doit être corrigé. Nous ne visons pas nécessairement la convivialité pour les débutants, mais plutôt des API productives et ergonomiques. Si vous êtes débutant, comfy devrait être facile à prendre en main, mais il ne sera peut-être pas aussi abouti que d'autres alternatives. L'objectif de comfy n'est finalement pas le polissage, la propreté de l'API, la conception propre, la sécurité des types, l'extensibilité ou le maximum de fonctionnalités. Il s'agit d'un moteur qui s'efface pour que vous puissiez créer votre jeu.
Il n'y a rien qui empêche fondamentalement comfy de devenir un moteur 3D, mais la dernière chose que nous voulons est d'essayer de lutter contre rend3 ou bevy en termes de précision PBR ou d'animations squelettiques. Comfy ne se bat pas contre Unreal Engine 5. Ce serait bien si des jeux 3D simples et stylisés étaient finalement possibles, mais nous voulons d'abord obtenir tous les éléments de base pour la 2D. Certains éléments internes de comfy (batching et z-sorting) devront être réimplémentés pour permettre cela et des techniques de rendu plus performantes, mais cela ne devrait pas se faire au détriment de la clarté de l'API et de l'ergonomie pour la plupart des jeux.
Caractéristiques
☑ API simple et productive.
☑ Rendu en mode immédiat pour les sprites, le texte et les formes avec mise en lot automatique. Si vous voulez dessiner un cercle, vous appelez la fonction draw_circle.
☑ Éclairage 2D avec HDR, tonemapping et bloom.
☑ Prise en charge intégrée de l'index z, ce qui signifie que vous n'avez pas à vous soucier de l'ordre de vos appels de dessin.
☑ Prise en charge intégrée de l'egui.
☑ Chargement parallèle des ressources avec prise en charge de la plupart des formats d'image et d'audio.
☑ Pas d'ECS complexe ou d'abstractions à apprendre. Construisez simplement votre jeu et laissez comfy s'occuper de vous.
☑ Audio simple utilisant kira. Si vous voulez jouer un son, vous appelez une fonction play_sound.
☑ Caméra 2D simple.
☑ Particules, à la fois une API simple pour les particules individuelles et des systèmes avec beaucoup d'options.
☑ Traînées avec un maillage personnalisé et une texture défilante.
☑ Rendu de texte (utilisant actuellement egui).
☑ Beaucoup d'utilitaires pour les tâches courantes.
Objectifs et philosophie de la conception
☑ Accent mis sur l'ergonomie et la productivité.
☑ Pas de magie. Le code fait ce qu'il semble faire.
☑ Destiné aux jeux simples, pour l'instant uniquement en 2D.
☑ Des valeurs par défaut utiles et bien pensées.
☑ APIs simples en mode immédiat pour presque tout.
☑ Des internes exposés lorsque vous en avez besoin davantage. Presque tous les champs de la structure sont publics, comfy n'empêche pas l'utilisateur d'avoir accès à certaines choses.
☑ Des temps de compilation raisonnables. Comfy est plus lent à compiler que macroquad, mais nous voulons éviter que les choses deviennent incontrôlables. Les utilisateurs finaux ne seront pas obligés d'utiliser des macros proc pour utiliser comfy.
☑ Les variables globales sont pratiques. Comfy en utilise beaucoup.
☑ Il est agréable de moins saisir. Comfy a un seul objet de contexte qui est passé partout.
☑ Les contraintes sont intéressantes. Comfy veut être utilisé pour beaucoup de jeux, mais pas tous.
☑ Les RefCell's sont sympas. Comfy les utilise beaucoup pour contourner les emprises partielles. Nous avons essayé de nous en passer à plusieurs reprises, c'était plus pénible.
Non-objectifs
☐ Prise en charge de la 3D AAA. Bien qu'il soit tout à fait possible d'étendre le moteur de rendu pour gérer la 3D, cela n'a pas encore été fait intentionnellement. Il y a beaucoup de complexité avec les modèles 3D, les matériaux, les animations squelettiques, etc. Comfy peut se développer pour supporter des jeux 3D simples dans le futur, mais il est extrêmement improbable qu'il tente un jour d'être compétitif avec les gros moteurs 3D. Nous voulons nous assurer que les choses que nous avons fonctionnent bien et sont utilisables avant d'ajouter des fonctionnalités plus complexes.
☐ Moteur basé sur ECS. Bien que comfy intègre hecs et fournit quelques aides pour l'utiliser, ce n'est en aucun cas nécessaire ou même optimal pour la plupart des cas.
☐ Modularité. Comfy n'est pas un moteur modulaire. Il s'agit d'une boîte à outils avec des valeurs par défaut qui conviennent à la plupart des jeux. Il n'y a aucune intention d'avoir un système de plugin ou la possibilité de remplacer wgpu par quelque chose d'autre.
☐ Performance maximale. Comfy n'est pas conçu pour être le moteur le plus rapide du marché. De nombreux compromis ont été faits pour des raisons d'ergonomie et de facilité d'utilisation, dont certains affectent les performances. Si vous cherchez le moyen le plus rapide de dessiner un million de quads, Comfy n'est pas fait pour vous. Si toutefois vous avez un cas d'utilisation légitime pour lequel les performances ne sont pas suffisantes, veuillez ouvrir un ticket de réclamation. Il y a beaucoup de choses à faire en ce qui concerne les performances, mais comme le développement est guidé par l'utilisation réelle, à moins que quelque chose n'apparaisse dans un profiler dans un jeu, il est peu probable qu'il soit optimisé davantage.