diff --git a/game.md b/game.md index e962002..bd07667 100644 --- a/game.md +++ b/game.md @@ -112,6 +112,7 @@ Trademarks have been known to cause problems in the realm of libre games, for ex ## See Also +- [game engine](game_engine.md) - [minigame](minigame.md) - [open console](open_console.md) - [fantasy console](fantasy_console.md) diff --git a/game_engine.md b/game_engine.md index f4c5c74..bdc2fec 100644 --- a/game_engine.md +++ b/game_engine.md @@ -2,41 +2,46 @@ Game engine is a [software](software.md), usually a [framework](framework.md) or a [library](library.md), that serves as a base code for [games](game.md). Such an engine may be seen as a [platform](platform.md) allowing [portability](portablity.md) and offering preprogrammed functionality often needed in games ([3D rendering](3d_rendering.md), [physics engine](physics_engine.md), [I/O](io.md), networking, [AI](ai.md), audio, scripting, ...) as well as [tools](tool.md) used in game development (level editor, [shader](shader.md) editor, 3D editor, ...). -A game engine differs from a general multimedia engine/library, such as [SDL](sdl.md), by its specific focus on games. While one may use some general technology such as [C](c.md) or [SDL](sdl.md) for creating a game, using a game engine should make the process easier. However, **beware of [bloat](bloat.md)** that plagues most mainstream game engines. [LRS](lrs.md) advises against use of any frameworks, so try to at worst use a game library. +A game engine differs from a general multimedia engine/library, such as [SDL](sdl.md), by its specific focus on games. It is also different from generic rendering engines such as [3D engines](3d_engine.md) like [OpenSceneGraph](osg.md) because games require more than just rendering (audio, AI, physics, ...). While one may use some general purpose technology such as [C](c.md) or [SDL](sdl.md) for creating a game, using a game engine should make the process easier. However, **beware of [bloat](bloat.md)** that plagues most mainstream game engines. [LRS](lrs.md) advises against use of any frameworks, so try to at worst use a game library. Many game programmers such as [Jonathan Blow](jonathan_blow.md) advocate and practice writing own engines for one's games. ## Existing Engines The following are some notable game engines. - **[free as in freedom](free_software.md)** - - **[Godot](godot.md)**: + - **[Allegro](allegro.md)**: 2D [C](c.md) game library. + - **[BRender](brender.md)**: Old 3D engine that used mainly [software rendering](sw_rendering.md), used e.g. in Carmageddon, later released under [MIT](mit.md). + - **[Cube2](cube2.md)**: 3D [voxel](voxel.md) outdoor shooter engine with real-time editable levels, used e.g. in Cube 2: Sauerbraten. + - **[Godot](godot.md)**: A successful but [bloated](bloat.md) [FOSS](foss.md) ([MIT](mit.md)) [framework](framewrok.md) engine, alternative to the proprietary [Unity](unity.md) engine, written in [C++](cpp.md), supports many platforms, has 3D/2D graphics and physics engines, scripting in many languages and many "advanced" features. [Capitalist software](capitalist_software.md). - *id Tech* engines (engines by [Id software](id_software.md)) - - **id Tech 0**: - - **id Tech 1**: - - **id Tech 2**: - - **[Darkplaces](darkplaces.md)**: - - **id Tech 3**: - - **[ioquake3](ioquake3.md)**: - - **[OpenArena](openarena.md)**: - - **id Tech 4**: - - **[Irrlicht](irrlicht.md)**: - - **[OGRE](ogre.md)**: - - **[OpenMW](openmw.md)**: - - **[Panda3D](panda3d.md)**: - - **[pygame](pygame.md)**: - - **[Raylib](raylib.md)** + - **id Tech 0**: Simple 2D [raycasting](raycasting.md) engine, written in [ANSI C](C.md), used mainly in [Wolf3D](wolf3d.md) (1992). + - **id Tech 1**: [BSP](bsp.md) rendering engine used mainly in [Doom](doom.md) and Doom 2. + - **[Chocolate Doom](chocolate_doom.md)**: Doom engine [fork](fork.md) aiming to be very similar to the vanilla version. + - **[GZDoom](gzdoom.md)**: Another Doom fork, supports newer OpenGL etc. + - **[PrBoom](prboom.md)**: Doom engine fork adding e.g. [OpenGL](ogl.md) support. + - **id Tech 2**: 3D engine used mainly in [Quake](quake.md) and Quake 2, in a modified form ([GoldSrc](goldsrc.md), proprietary) also in [Half Life](half_life.md), features both GPU accelerated and [software rendering](sw_rendering.md). + - **[Darkplaces](darkplaces.md)**: [Fork](fork.md) of id Tech 2, used e.g. in [Xonotic](xonotic.md). + - **id Tech 3**: 3D engine used mainly in [Quake 3](quake3.md), sadly dropped [software rendering](sw_rendering.md) support. + - **[ioquake3](ioquake3.md)**: Fork of id Tech 3 aiming for bugfixes and improvements, e.g. [SDL](sdl.md) integration. + - **[OpenArena](openarena.md)**: Game-specific fork of id Tech 3. + - **id Tech 4**: 3D engine used mainly in [Doom 3](doom3.md) and [Quake 4](quake4.md). + - **[iodoom3](iodoom3.md)**: Fork of id Tech 4, in a similar spirit to ioquake3. + - **[Irrlicht](irrlicht.md)**: [C++](cpp.md) cross-platform library for 3D games, includes a physics engine and many rendering backends ([OpenGL](ogl.md), [software](sw_rendering.md), [DirectX](directx.md), ...). Used e.g. by [Minetest](minetest.md). + - **[OpenMW](openmw.md)**: [FOSS](foss.md) remake of the engine of a proprietary [RPG](rpg.md) game [TES: Morrowind](morrowind.md), can be used to make open-world 3D RPG games. + - **[Panda3D](panda3d.md)**: 3D game engine, under [BSD](bsd_license.md), written in [Python](python.md) and [C++](cpp.md). + - **[pygame](pygame.md)**: [Python](python.md) 2D game library. + - **[Raylib](raylib.md)**: [C99](c99.md) 2D/3D game library, relatively minimalist. - **[SAF](saf.md)**: Official [LRS](lrs.md) library for tiny and simple portable games. - - **[Torque3D](torque3d.md)**: -- **proprietary** (no go!): - - **[BRender](brender.md)**: - - **[Build Engine](build_engine.md)**: - - *id Tech* engines (engines by [Id software] - - **id Tech 5**: - - **id Tech 6**: - - **id Tech 7**: - - **[Game Maker](game_maker.md)**: - - **[RAGE](rage.md)**: - - **[Source](source_engine.md)**: - - **[Source2](source2_engine.md)**: - - **[Unity](unity.md)**: - - **[Unreal Engine](unreal_engine.md)**: \ No newline at end of file + - **[Torque3D](torque3d.md)**: 3D game engine in [C++](cpp.md). +- **[proprietary](proprietary.md)** (no go!): + - **[Build Engine](build_engine.md)**: Old portal rendering "[pseudo 3D](pseudo_3d.md)" engine used mainly in [3D Realms](3d_realms.md) games such as [Duke3D](duke3d.md). It is [source available](source_available.md). + - *id Tech* engines (engines by [Id software](id_software.md)) + - **id Tech 5**: 3D engine used e.g. in Rage and some shitty Wolfenstein games. + - **id Tech 6**: 3D engine adding [Vulkan](vulkan.md) support, used e.g. in Doom 2016. + - **id Tech 7**: 3D engine used e.g. in Doom: Eternal. + - **[GameMaker](gamemaker.md)**: Laughable toy for non-programmers. + - **[RAGE](rage.md)**: 3D open-world engine developed and used by [Rockstar](rockstar.md) for games such as [GTA](gta.md). + - **[Source](source_engine.md)**: 3D engine by [Valve](valve.md) used in games such as [Half Life 2](half_life2.md). + - **[Source2](source2_engine.md)**: Continuation of Valve's source engine with added support of [VR](vr.md) and other shit. + - **[Unity](unity.md)**: Shitty nub all-in-one 3D game engine, very [bloated](bloat.md) and [capitalist](capitalist_software.md), extremely popular among [coding monkeys](code_monkey.md), includes [ads](ad.md). + - **[Unreal Engine](unreal_engine.md)**: One of the leading proprietary 3D game engines developed alongside [Unreal Tournament](unreal_tournament.md) games, EXTREMELY [BLOATED](bloat.md) and [capitalist](capitalist_software.md), known for hugely overcomplicated rendering (advertised as "[photorealistic](photorealism.md)"). \ No newline at end of file diff --git a/suckless.md b/suckless.md index 5c92f77..90dc702 100644 --- a/suckless.md +++ b/suckless.md @@ -2,16 +2,16 @@ Suckless, software that sucks less, is a type of [free](free_software.md) [software](software.md), as well as an organization (http://suckless.org/), that tries to adhere to a high technological [minimalism](minimalism.md), freedom and hackability, and opposes so called [bloat](bloat.md) and unnecessary complexity which has been creeping into most "[modern](modern.md)" software and by which technology has started to become less useful and more burdening. It is related to [Unix philosophy](unix_philosophy.md) and [KISS](kiss.md) but brings some new ideas onto the table. [LRS](lrs.md) builds on top of suckless ideas. -Notable suckless promoters include [Luke Smith](luke_smith.md) and [Mental Outlaw](mental_outlaw.md). +Notable suckless promoters on mainstream social media include [Luke Smith](luke_smith.md), [DistroTube](distrotube.md) and [Mental Outlaw](mental_outlaw.md). -{ From what it seems to me, the "official" suckless community is largely quiet, leading conversations mostly on mailing lists and focusing almost exclusively on the development of their software without politics, activism and off topics, probably because they consider it bullshit that would only be distracting. There is also suckless subreddit which is similarly mostly focused on the software alone. They let their work speak. Some accuse the community of being Nazis, however I believe this is firstly irrelevant and secondly mostly false accusations of haters, even if we find a few Nazis among them, just as in any community. Most pro-suckless people I've met were actually true socialists (while Nazis are not socialist despite their name). Unlike [tranny software](tranny_software.md), suckless software itself doesn't promote any politics, it is a set of purely functional tools, so the question of the developers' private opinions is unimportant here. Suckless ideas are good regardless of whose brains they came from. ~drummyfish } +{ From what it seems to me, the "official" suckless community is largely quiet and closed, leading conversations mostly on mailing lists and focusing almost exclusively on the development of their software without politics, activism and off topics, probably because they consider it bullshit that would only be distracting. There is also suckless subreddit which is similarly mostly focused on the software alone. They let their work speak. Some accuse the community of being Nazis, however I believe this is firstly irrelevant and secondly mostly false accusations of haters, even if we find a few Nazis among them, just as in any community. Most pro-suckless people I've met were actually true socialists (while Nazis are not socialist despite their name). Unlike [tranny software](tranny_software.md), suckless software itself doesn't promote any politics, it is a set of purely functional tools, so the question of the developers' private opinions is unimportant here. Suckless ideas are good regardless of whose brains they came from. ~drummyfish } ## Attributes - Being [free software](free_software.md). -- Extreme [minimalism](minimalism.md) and minimizing [dependencies](dependency.md), elimination of any [bullshit](bullshit.md). +- Extreme [minimalism](minimalism.md) and minimizing [dependencies](dependency.md), elimination of any [bullshit](bullshit.md) and [bloat](bloat.md). - Configuration of software is part of its source code (`config.h`) and change of this configuration requires recompiling the software (which is extremely easy and fast with suckless software). This removes the need for dealing with config files which requires special libraries, file systems and extra code. -- Mainly using two [programming languages](programming_language.md): [C](c.md) for compiled programs and [POSIX shell](posix_shell.md) for scripting. +- Mainly using two [programming languages](programming_language.md): [C](c.md) (C89 or C99) for compiled programs and [POSIX shell](posix_shell.md) for scripting. - [Forking](fork.md) by default, software is distributed in source format, every user is supposed to create a personal customized fork and compile/customize the software himself. - Mods (extension/addons) are implemented and distributed as [patch](patch.md) files. - Permissive licensing such as [MIT](mit.md), [CC0](cc0.md) etc. diff --git a/sw_rendering.md b/sw_rendering.md index 5b74e42..86cd966 100644 --- a/sw_rendering.md +++ b/sw_rendering.md @@ -25,7 +25,7 @@ Some SW renderers make use of specialized CPU instructions such as [MMX](mmx.md) These are some notable software renderers: - **[Build engine](build_engine.md)**: While not a "true 3D", this was a very popular [proprietary](proprietary.md) portal-rendering engine for older games like Duke Nukem 3D or Blood. -- **[BRender](brender.md)**: Old [proprietary](proprietary.md) commercial renderer used in games such as Carmageddon, Croc or Harry Potter 1. +- **[BRender](brender.md)**: Old commercial renderer used in games such as Carmageddon, Croc or Harry Potter 1. Later made [FOSS](foss.md). - **[id Tech](id_tech.md)**: Multiple engines by [Id software](id.md) (later made [FOSS](foss.md)) used for games like [Quake](quake.md) included a software renderer. - **[Irrlich](irrlicht.md)**: [FOSS](foss.md) game engine including a software renderer as one of its [backends](backend.md). - **[Mesa](mesa.md)**: [FOSS](foss.md) implementation of [OpenGL](opengl.md) that includes a software rasterizer.