<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rodrigo Oliveira</title>
    <description>The latest articles on DEV Community by Rodrigo Oliveira (@mdkcore).</description>
    <link>https://dev.to/mdkcore</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F333400%2F0fa8ad27-3f7b-4e2a-bf1f-7908f64025bd.png</url>
      <title>DEV Community: Rodrigo Oliveira</title>
      <link>https://dev.to/mdkcore</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mdkcore"/>
    <language>en</language>
    <item>
      <title>Game Development: engines, libraries and frameworks</title>
      <dc:creator>Rodrigo Oliveira</dc:creator>
      <pubDate>Tue, 25 May 2021 01:29:16 +0000</pubDate>
      <link>https://dev.to/mdkcore/game-development-engines-libraries-and-frameworks-22gg</link>
      <guid>https://dev.to/mdkcore/game-development-engines-libraries-and-frameworks-22gg</guid>
      <description>&lt;p&gt;I’m willing to write about game development for some time already, and this day has finally arrived! In a series of don’t-known-how-many posts I will introduce some basic concepts of game development and game engines, written in a concise manner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Game engine? I’ve heard of
&lt;/h2&gt;

&lt;p&gt;It’s like the “engine” of a vehicle. This is the “core” of a game, with anything necessary for a game to run, like rendering, sound, user input, animations, physics…&lt;/p&gt;

&lt;p&gt;Not all game engines have this specific set of features, and some of them do have a bigger list of useful components to make games, like artificial intelligence, networking or scripting, for example.&lt;/p&gt;

&lt;p&gt;In essence, game engines are used to develop new games, ease the reuse of code and simplify the deployment on another platforms.&lt;/p&gt;

&lt;p&gt;But a game do not need to be developed only using a triple-A game engine. You can make your own game engine, from scratch, using the programming language you’re familiar with, and the help of some libraries and/or frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Engines, libraries and frameworks
&lt;/h2&gt;

&lt;p&gt;Here is a list of some game engines, libraries and frameworks. This is far from the entire plethora of options we have, but can be a good start to understand how they work and how to get started on the game development world.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://unity.com/" rel="noopener noreferrer"&gt;Unity&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;A multiplatform proprietary game engine. Can be used to create 2D, 3D, VR, AR, simulations… Used in other areas, like construction and film (see &lt;a href="https://www.engadget.com/2019-07-29-lion-king-remake-vfx-mpc-interview.html" rel="noopener noreferrer"&gt;The Lion King&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2FUWtJdhsu9jpl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2FUWtJdhsu9jpl.jpg" alt="Unity editor"&gt;&lt;/a&gt;Unity editor&lt;/p&gt;

&lt;p&gt;It is written in C++, but uses C# to create games. You do not need to to buy a licence if your earnings are less than 100k USD.&lt;/p&gt;

&lt;p&gt;An interesting feature is the concept of &lt;a href="https://docs.unity3d.com/Manual/Prefabs.html" rel="noopener noreferrer"&gt;Prefabs&lt;/a&gt;, a special type of component where you can save a fully configured &lt;a href="https://docs.unity3d.com/Manual/class-GameObject.html" rel="noopener noreferrer"&gt;GameObject&lt;/a&gt;in the project as a reusable asset (and buy/sell them in the &lt;a href="https://assetstore.unity.com/" rel="noopener noreferrer"&gt;Asset Store&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Some games made in Unity: &lt;a href="https://innersloth.com/gameAmongUs.php" rel="noopener noreferrer"&gt;Among Us&lt;/a&gt;, &lt;a href="http://www.cupheadgame.com/" rel="noopener noreferrer"&gt;Cuphead&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.unrealengine.com" rel="noopener noreferrer"&gt;Unreal Engine&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Multiplatform commercial game engine that can be used to create 2D, 3D, VR, AR and simulations. Its used in other areas, like in the film industry (examples include &lt;a href="https://www.polygon.com/tv/2020/2/20/21146152/the-mandalorian-making-of-video-unreal-engine-projection-screen" rel="noopener noreferrer"&gt;The Mandalorian&lt;/a&gt; and &lt;a href="https://www.unrealengine.com/en-US/spotlights/hbo-s-westworld-turns-to-unreal-engine-for-in-camera-visual-effects" rel="noopener noreferrer"&gt;Westworld&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2Fwz6A97hEk234.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2Fwz6A97hEk234.png" alt="Unreal Engine editor"&gt;&lt;/a&gt;Unreal Engine editor&lt;/p&gt;

&lt;p&gt;The engine is written in C++, and this is the programming language you will use to develop your games. Has a monthly subscription model (with 5% royalty on gross revenues from any release game), were developers can access the full version of the engine, including the source code.&lt;/p&gt;

&lt;p&gt;Besides C++, you can make a game using &lt;a href="https://docs.unrealengine.com/en-US/ProgrammingAndScripting/Blueprints/index.html" rel="noopener noreferrer"&gt;Blueprints&lt;/a&gt;, a visual scripting language. You can buy and sell assets on the &lt;a href="https://unrealengine.com/marketplace/" rel="noopener noreferrer"&gt;Unreal Engine Marketplace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qtrnn.io/posts/images/eq562AaYGoxd.gif" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2Feq562AaYGoxd.png" alt="fail"&gt;&lt;/a&gt;me trying to use Blueprints for the first time&lt;/p&gt;

&lt;p&gt;Some games made in Unreal Engine: &lt;a href="https://www.kingdomhearts.com/3/us/home/" rel="noopener noreferrer"&gt;Kingdom Hearts III&lt;/a&gt;, &lt;a href="https://goat-simulator.com/" rel="noopener noreferrer"&gt;Goat Simulator&lt;/a&gt;, &lt;a href="https://www.mortalkombat.com" rel="noopener noreferrer"&gt;Mortal Kombat X/11&lt;/a&gt;, &lt;a href="https://www.tetriseffect.game/" rel="noopener noreferrer"&gt;Tetris Effect&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://godotengine.org/" rel="noopener noreferrer"&gt;Godot&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;A cross-platform free and &lt;a href="https://github.com/godotengine/godot" rel="noopener noreferrer"&gt;open-source&lt;/a&gt; game engine. It’s written in C++, and you can create 2D and 3D games using C++, C# and any other language with &lt;a href="https://godotengine.org/article/dlscript-here" rel="noopener noreferrer"&gt;GDNative&lt;/a&gt; bindings, like Rust. The engine also includes its own scripting language, &lt;a href="https://docs.godotengine.org/en/3.3/getting_started/scripting/gdscript/gdscript_basics.html" rel="noopener noreferrer"&gt;GDScript&lt;/a&gt;, and its own visual programmng language, &lt;a href="https://docs.godotengine.org/en/3.3/getting_started/scripting/visual_script/index.html" rel="noopener noreferrer"&gt;VisualScript&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2FeFbOgrylfzCf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2FeFbOgrylfzCf.png" alt="Godot editor"&gt;&lt;/a&gt;Godot editor&lt;/p&gt;

&lt;p&gt;Games made using Godot: &lt;a href="https://store.steampowered.com/app/846030/V_Rings_of_Saturn/" rel="noopener noreferrer"&gt;ΔV: Rings of Saturn&lt;/a&gt;, &lt;a href="https://store.steampowered.com/app/824090/TailQuest_Defense/" rel="noopener noreferrer"&gt;TailQuest: Defense&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.sfml-dev.org/" rel="noopener noreferrer"&gt;SFML&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Cross-platform software development library written in C++ with bindings for a lot of languages (C, Go, Python, Rust, …). Provides a simple interface to various components, and is composed of five modules: system, window, graphics, audio and network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DeadBodyOutline/ShipShift" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2Fshipshift.png" alt="ShipShift"&gt;&lt;/a&gt;ShipShift, game made for Ludum Dare 35&lt;/p&gt;

&lt;p&gt;Some games made in SFML can be found &lt;a href="https://sfmlprojects.org/games" rel="noopener noreferrer"&gt;here&lt;/a&gt; and &lt;a href="https://itch.io/games/made-with-sfml" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.libsdl.org/" rel="noopener noreferrer"&gt;SDL&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Dream of every indie developer: make its own game engine on top of SDL.&lt;/p&gt;

&lt;p&gt;Cross-platform software development library written in C, works natively with C++ and there are bindings for a lot of languages (Go, Lua, Python, Rust, …).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qtrnn.io/posts/images/nightfall.gif" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqtrnn.io%2Fposts%2Fimages%2Fnightfall.png" alt="NightFall"&gt;&lt;/a&gt;Making games is fun&lt;/p&gt;

&lt;p&gt;Works providing low level access to audio, keyboard, mouse, joystick and graphics hardware. Also provides some more functions through a few separate official libraries, like SDL_image, SDL_ttf and SDL_mixer…).&lt;/p&gt;

&lt;p&gt;It is used by video playback software, emulators and games, including some from &lt;a href="https://www.valvesoftware.com" rel="noopener noreferrer"&gt;Valve&lt;/a&gt; and &lt;a href="https://www.humblebundle.com/" rel="noopener noreferrer"&gt;Humble Bundle&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some games made with SDL: &lt;a href="https://www.angrybirds.com/" rel="noopener noreferrer"&gt;Angry Birds&lt;/a&gt;, &lt;a href="https://play0ad.com/" rel="noopener noreferrer"&gt;0 A.D.&lt;/a&gt;, &lt;a href="https://www.factorio.com/" rel="noopener noreferrer"&gt;Factorio&lt;/a&gt;, &lt;a href="https://thelettervsixtim.es/" rel="noopener noreferrer"&gt;VVVVVV&lt;/a&gt;, &lt;a href="https://subsetgames.com/ftl.html" rel="noopener noreferrer"&gt;FTL: Faster Than Light&lt;/a&gt;, &lt;a href="https://web.archive.org/web/20060826172536/http://www.unrealtournament.com/" rel="noopener noreferrer"&gt;Unreal Tournament 2004&lt;/a&gt; (Linux port only).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.pygame.org/" rel="noopener noreferrer"&gt;pygame&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Cross-platform software development library written in Python, build on top of SDL, abstracting the most common functions, allowing the use of Python to structure the game.&lt;/p&gt;

&lt;p&gt;Has some features that are not present on SDL itself, like vector math, collision detection, pixel-array manipulation, and &lt;a href="https://www.pygame.org/docs/" rel="noopener noreferrer"&gt;more&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some games made in pygame: &lt;a href="http://fretsonfire.sourceforge.net/" rel="noopener noreferrer"&gt;Frets Of Fire&lt;/a&gt;, &lt;a href="https://dafluffypotato.itch.io/super-potato-bruh" rel="noopener noreferrer"&gt;Super Potato Bruh&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  other
&lt;/h3&gt;

&lt;p&gt;You can make your games using virtually any programming language, library or framework. There are so many - specific and general purpose - game engines than the ones I’ve listed here. Below is a list of some of them I personally think that are interesting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://openframeworks.cc/" rel="noopener noreferrer"&gt;openFrameWorks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.yoyogames.com/en/gamemaker" rel="noopener noreferrer"&gt;GameMaker Studio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.cocos2d.org/" rel="noopener noreferrer"&gt;cocos2d&lt;/a&gt; (cocos2d-x)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.rpgmakerweb.com/downloads" rel="noopener noreferrer"&gt;RPG Maker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://love2d.org/" rel="noopener noreferrer"&gt;löve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twinery.org/" rel="noopener noreferrer"&gt;Twine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bacon2d.github.io/" rel="noopener noreferrer"&gt;bacon2d&lt;/a&gt; (hah!)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ogre3d.org/" rel="noopener noreferrer"&gt;OGRE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.havok.com/" rel="noopener noreferrer"&gt;Havok&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So… that’s it?
&lt;/h2&gt;

&lt;p&gt;Now you know something about game engines and what is used to create games, I will show you in the next articles some basic concepts of a game, including some code in &lt;a href="https://github.com/pygame/pygame" rel="noopener noreferrer"&gt;pygame&lt;/a&gt; (maybe something in &lt;a href="https://github.com/libsdl-org/SDL" rel="noopener noreferrer"&gt;SDL&lt;/a&gt; as well). Here is a list of what I’m planning to talk about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;game loop and user input&lt;/li&gt;
&lt;li&gt;scenes, layers and parallax&lt;/li&gt;
&lt;li&gt;sprites&lt;/li&gt;
&lt;li&gt;physics&lt;/li&gt;
&lt;li&gt;sound&lt;/li&gt;
&lt;li&gt;something else?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay tuned!&lt;/p&gt;

&lt;p&gt;If you have a comment, correction or suggestion about this article, feel free to leave a word ;)&lt;/p&gt;

</description>
      <category>gamedev</category>
    </item>
    <item>
      <title>OpenPGP proof</title>
      <dc:creator>Rodrigo Oliveira</dc:creator>
      <pubDate>Mon, 17 Aug 2020 04:51:25 +0000</pubDate>
      <link>https://dev.to/mdkcore/openpgp-proof-18en</link>
      <guid>https://dev.to/mdkcore/openpgp-proof-18en</guid>
      <description>&lt;p&gt;This is an OpenPGP proof that connects &lt;a href="https://keyoxide.org/382908bd497bfb0043f278710ef3f47de7d77529"&gt;my OpenPGP key&lt;/a&gt; to &lt;a href="https://dev.to/mdkcore"&gt;this dev.to account&lt;/a&gt;. For details check out &lt;a href="https://keyoxide.org/guides/openpgp-proofs"&gt;https://keyoxide.org/guides/openpgp-proofs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[Verifying my OpenPGP key: openpgp4fpr:382908bd497bfb0043f278710ef3f47de7d77529]&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
