{"id":86,"date":"2021-06-08T10:31:41","date_gmt":"2021-06-08T10:31:41","guid":{"rendered":"http:\/\/athenswonder.com\/?p=86"},"modified":"2021-06-08T10:44:19","modified_gmt":"2021-06-08T10:44:19","slug":"cross-platform-game-engine-development-and-game-development","status":"publish","type":"post","link":"https:\/\/athenswonder.com\/?p=86","title":{"rendered":"Cross Platform Game Engine Development and Game Development"},"content":{"rendered":"\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/fb3-da3.jpg?w=470&amp;h=264\" alt=\"fb3 da3\" class=\"wp-image-1040\"\/><\/figure>\n\n\n\n<p>If you just want to make a game i.e you are more of a designer, then use Unreal Engine 4 is available All for&nbsp;<strong>FREE<\/strong>&nbsp;+ ( 5% royalty on gross revenue after the first $3,000 per product per quarter (i.e. after 3000$ per quarter on each product ) for all platforms with Complete Source Code (as much as they can release legally, source of PS4 and XBox One code copyright of Sony and MS in SDK is not included. Anyway you get them from Sony and MS if you are developing for consoles). When releasing a product using UE4, you\u2019re signing up to pay Epic 5% of gross product revenue from users, regardless of what company collects the revenue. That means: If your game makes $10 on the App Store, Apple may pay you $7, but you\u2019d pay Epic $0.50 (5% of $10). You get everything fully for this price (beats even Unity completely at this price), amazing deal for indies. For complete Royalty free license contact Epic for alternate license.<\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.unrealengine.com\/\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-link is-provider-writing-novels-philosphy-hollywood-movies-computers-graphics-and-game-programming wp-block-embed-writing-novels-philosphy-hollywood-movies-computers-graphics-and-game-programming\"><div class=\"wp-block-embed__wrapper\">\n<a href=\"https:\/\/nexon7.wordpress.com\/2013\/09\/03\/unreal-engine-4-vs-cry-engine-3\/\">Unreal Engine 4 vs Cry Engine 4 vs Frostbite 3 vs Source&nbsp;2<\/a>\n<\/div><\/figure>\n\n\n\n<p>A Game Engine must have following Subsystems which should be developed in following order.<\/p>\n\n\n\n<p>Search Google for anything you want to further know about.<\/p>\n\n\n\n<p>First read&nbsp;\u2013 Chapter 1 What Is Game Programming Really Like?, in Game Coding Complete 3rd Ed \u2013 Mike McShaffry<\/p>\n\n\n\n<p>Does not matter if you are a Indie Developer and Designer. Read on.<\/p>\n\n\n\n<p>Below is the workflow of my own game engine \u2013<\/p>\n\n\n\n<p>All the libraries mentioned are MIT or ZLib, so that you can use them in commercial projects also. (Note: Quake 2, Quake 3, Doom 3 Quake 4, ETQW source code is&nbsp; GPL so you cannot use them in your engine but you can learn from them.)<\/p>\n\n\n\n<p>You may be tempted to work on whole game or engine at once and many books referred contain all topics for game development, but it is better to work in order focusing on one subsystem and side wise implementing some other interesting system when you get bored with the primary subsystem, but keep focus on primary subsystem. Things done with planning and in right order are faster and better.<\/p>\n\n\n\n<p>Licensing of source code you refer and use&nbsp;\u2013<\/p>\n\n\n\n<p>At many places Source Code of Quake 2, Quake 3, Doom 3 is referred. Read it, understand how things are done in it (Code is a bit old but it works). Also You can look at Unreal Engine 4 Source code for 19USD paid once (and once again whenever you want to see the updated version) (And also Unreal Tournament 99, Unreal Tournament 2004, Unreal Tournament 3 games Unreal Script Gameplay Logic). Read the books, and then implement same features in your own engine (Clean room implementation), while learning from existing good source code. The Code will be your copyright, modern and working on platforms you want. Source code of other MIT or ZLib license libraries is also very good and you can use it directly in your game even commercially. You only need to credit the author and keep MIT or ZLib (or BSD, Apache) license for the original code. You can release your own code under your own license (unlike GPL which will make your code also GPL). You can use LGPL in Lib or dll, but do not modify it, like GNU C++ Compiler libraries you use to compile your program.<\/p>\n\n\n\n<p><strong>1. CoreLib<\/strong>&nbsp;\u2013 (Use STL. Extra features are added with graphics, physics, gameplay)<\/p>\n\n\n\n<p>Learn C++<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/cb.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/cb.jpg?w=469&amp;h=227\" alt=\"cb\" class=\"wp-image-850\"\/><\/a><\/figure>\n\n\n\n<p>Books&nbsp;\u2013 C++ Complete Reference 4thEd- Herbert Schildt, Beginning Cpp Through Game Programming \u2013 Michael Dawson, C How to Program 6th Ed \u2013 Harvey Deitel, C++ How to Program 8th Ed \u2013 Harvey Deitel, Effective C++ 3rd Ed \u2013 Scott Meyers, More Effective C++ \u2013 Scott Meyers, Effective STL \u2013 Scott Meyers, The C++ 11 Standard Library 2ndEd \u2013 Nicolai Josuttis, C++ Concurrency in Action \u2013 Anthony Williams, Intel Threading Building Blocks \u2013 James Reinders, Cpp for Game Programmers \u2013 Noel Llopis, Game Coding Complete 3rd Ed \u2013 Mike McShaffry (DirectX9), Game Coding Complete 4th Ed (DirectX11) \u2013 Mike McShaffry, deWiTTERS Game Loop article<\/p>\n\n\n\n<p>Make a console for output printing. Make Console Executable. Console Program Windows in Quake 3 source (win_syscon.cpp). Terminal tty in Linux.<\/p>\n\n\n\n<p>Basically CoreLib is for container classes and algorithms. Use STL for this as it is best solution, Available everywhere with c++11 in gcc4.8.2 and VS2013 with good compatibility. Pool Memory allocator will be needed for faster memory allocations in node based classes like list, set or map. The Source code of referred engines you will see does not use STL but that is because when they were develop STL was not mature. But now STL is very Good, stable, Fast and Easy technology and is part of C++ language. There is no point reimplementing a language feature or compiler (use already available popular scripting language).<\/p>\n\n\n\n<p>Use This \u2013&nbsp;<a href=\"http:\/\/www.sjbrown.co.uk\/2004\/05\/01\/pooled-allocators-for-the-stl\/\">http:\/\/www.sjbrown.co.uk\/2004\/05\/01\/pooled-allocators-for-the-stl\/<\/a><\/p>\n\n\n\n<p>Arguably minimize use of list(use stl::vector where frequent insertion deletion is not required) and map (use stl::hash_map or stl::hash_set) and you may not need to use Pool allocator even. If it is really necessary for performance use Pool Allocator.<\/p>\n\n\n\n<p>Check and learn Container classes then move forward.<\/p>\n\n\n\n<p>Streaming, System Functions, etc can be implemented now if you learn them, or you can write them while learning Graphics also as they are given in many books and are present in source code also.<\/p>\n\n\n\n<p>Multithreading&nbsp;\u2013 It is better to design engine for multithreading from the start. Use Task-Based Multithreading&nbsp;(use Intel TBB), instead of Thread-Based Multithreading. Use SDL for cross platform threads. Multithreading works best when different processor cores are working on different data in parallel, i.e. executing operations in parallel. Identify such portions of your program. Sequential routines are better left to one core as you will not get more speed from multiple cores, instead speed will decrease due to using atomic, lock,&nbsp; mutex, semaphore, etc.<\/p>\n\n\n\n<p>Profiling and Tweaking&nbsp;\u2013 Always keep profiling your program for Speed and Memory Usage (simulating conditions in which software will be used by consumer). Then tweak the necessary parts at the end, as 90% of the execution time of a computer program is spent executing 10% of the code (known as the 90\/10 law). A good free Open Source Profiler is&nbsp; \u2013 Very Sleepy profiler. Or you can use the MS Visual Studio profiler available in the Ultimate versions of Visual Studio. For Memory Usage checking you can write your own Allocator or Functions to trace memory or use a different allocator like Pool Memory Allocator. Look at EASTL also (STL library implementation by Electronic Arts under LGPL license (using as it is is free without changing license of your own code) for use in games for better memory performance. But it is not standard, it is better to use standard STL with your own custom memory allocator. This is mainly important if you are developing for Gaming Consoles(Ps4, XBox One) or mobiles with limited memory and no virtual memory). You can read books (Cpp for Game Programmers \u2013 Noel Llopis), look at source code of Quake3, Doom3 (common.cpp).<\/p>\n\n\n\n<p><strong>2. Graphics and Physics<\/strong>&nbsp;\u2013<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/fb3-bf4.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/fb3-bf4.jpg?w=470&amp;h=264\" alt=\"fb3 bf4\" class=\"wp-image-1039\"\/><\/a><\/figure>\n\n\n\n<p>Window and Event Management in Operating System&nbsp;\u2013<\/p>\n\n\n\n<p>Implement Window creation (windows API and XWindows API or use SDL) and handling first.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Programming Windows 5th Ed \u2013 Charles Petzold, Linux Programming Unleashed \u2013 Kurt Wall, X Window System The Complete Reference \u2013 Robert Scheifler<\/p>\n\n\n\n<p>Graphics&nbsp;\u2013<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/c3-71.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/c3-71.jpg?w=470&amp;h=264\" alt=\"c3 (7)\" class=\"wp-image-824\"\/><\/a><\/figure>\n\n\n\n<p>DirectX (Direct3D part) (On Windows only) and OpenGL(on all platforms).<\/p>\n\n\n\n<p>You can use OpenGL, OpenAL, SDL_Input (or your own), SDL_Net (or your own). See Quake 3 or Doom 3 or SDL Source Code for Linux Input and Networking.<\/p>\n\n\n\n<p>Use MSVC and Code Blocks on Windows. Use Code Blocks on Linux Mint. (Code Blocks will make Linux development lot easy like Windows)<\/p>\n\n\n\n<p>#if defined(EN_USE_DIRECTX)&nbsp;&nbsp; &nbsp;\/\/ Set in project properties. Use macro for conditional compilation<br>For enabling DirectX in Visual Studio, make a different build configuration<br>exe uses OpenGL and openAL always. OpenGL, OpenAL Build can be made optional like DirectX also.<br>no need to use DirectX in Code Blocks which is problematic in Code Blocks.<\/p>\n\n\n\n<p>and Disabled or not declared in Code Blocks&nbsp;&nbsp; &nbsp;\/\/ uses opengl and openal<\/p>\n\n\n\n<p>Make Engine.lib Static to include and use with editor<br>AI, Physics, Sound may also have separate libs linked in main exe, it still seems to program as one big exe.<\/p>\n\n\n\n<p>Not using dll is good for Multithreading and Memory Stability especially with STL. (See Quake 2 source for kernel + dynamic dll handshake solution but it is lot of hassle to maintain and will slow your engine making progress considerably. You can always use this solution at the end of the project which will be overall faster development. See Fabien Salagard Quake 2 Engine review for understanding)<br>Allocation of memory in one module an Deallocation in another is a difficult bug to track and correct.<br>Also speed is fastest.<\/p>\n\n\n\n<p>Keep Linux specific files separate in Linux folder and Windows specific files in win folder of whatever subsystem they are.<br>May seem odd to put separate subsystem files together, but it is very good for&nbsp; Cross Platform maintainability.<br>Use SDL for complete Cross Platform Compatibility. You can also use SFML which is easier but SDL is more mature and widely used.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Focus on SDL \u2013 Ernest Pazera,&nbsp;SDL Game Development \u2013 Shaun Mitchell,&nbsp; SFML Game Development \u2013 Artur Moreira<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Introduction to 3D Game Programming with DirectX 9.0 \u2013 Frank D Luna (old non shader API), Introduction To 3D Game Programming With DirectX9.0c A Shader Approach \u2013 Frank D Luna, Introduction to 3D Game Programming with DirectX 11 \u2013 Frank D Luna, Nehe OpenGL Tutorials, OpenGL Super Bible 4th Ed \u2013 Richard S Wright (old non shader API), OpenGL Super Bible 6th Ed \u2013 Richard S Wright (OpenGL 4, equal to Direct3D11),&nbsp;OpenGL Programming Guide 8thEd,&nbsp; 3D Math Primer for Graphics and Game Development 2nd Ed, Math for 3D Game Programming Computer Graphics \u2013 Eric Lengyel, Computer Graphics Principles and Practice 3rd Ed \u2013 John Hughes, GPU Gems Nvidia 1, 2, 3. Physically Based Rendering 2nd Ed \u2013 Matt and Greg, ShaderX3 \u2013&nbsp; Advanced Rendering with DirectX and OpenGL, Programming Vertex Geometry and Pixel Shaders \u2013 Wolfgang Engel, Advanced Animation with DirectX9 \u2013 Jim Adams,&nbsp;HLSL Development Cookbook, OpenGL 4.0 Shading Language Cookbook, Directx 9 User Interfaces Design and Implementation \u2013 Alan Thorn, Refer to source code of Irrlicht3d, Ogre (it is really big), Torque 3D, Sauerbraten<\/p>\n\n\n\n<p>Physics&nbsp;\u2013<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/10\/sr31_resize.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/10\/sr31_resize.jpg?w=478&amp;h=300\" alt=\"sr31_resize\" class=\"wp-image-975\"\/><\/a><\/figure>\n\n\n\n<p>Physics is largely tied to Graphics Subsytem so it is include with graphics. Bullet Library is very good for Cross Platform fast physics.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Game Physics Engine Development 2nd Ed \u2013 Ian Millington, Real-Time Collision Detection \u2013 Christer Ericson<\/p>\n\n\n\n<p>Overall Engine Architecture&nbsp;\u2013<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/a2.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/a2.jpg?w=479&amp;h=359\" alt=\"a2\" class=\"wp-image-541\"\/><\/a><\/figure>\n\n\n\n<p>Books&nbsp;\u2013 3D Game Engine Architecture \u2013 David H Eberly, 3D Game Engine Design \u2013 D H Eberly, Game Physics \u2013 David H Eberly, Game Engine Architecture \u2013 Jason Gregory, 3D Game Engine Programming \u2013 Stefan Zerbst, Programming a Multiplayer FPS in DirectX \u2013 Vaughan Young,&nbsp;Level of Detail for 3D Graphics \u2013 David Luebke, Real-Time 3D Terrain Engines Using Cpp and Directx9 \u2013 Greg Snook, Write Portable Code \u2013 Brian Hook,&nbsp;Cross Platform Game Programming \u2013 Steven Goodwin, Game Programming Gems,&nbsp;Core Techniques and Algorithms in Game Programming \u2013 Daniel Sanchez, Multithreaded Game Engine Design \u2013 Jonathan Harbour, Refer to Source code of Quake 2, Quake 3, Doom 3 (GPL License) available freely on net<\/p>\n\n\n\n<p><strong>3. Scripting<\/strong>&nbsp;\u2013 (For setting Dynamic Game Logic)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/10\/sk1_resize1.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/10\/sk1_resize1.jpg?w=475&amp;h=267\" alt=\"sk1_resize\" class=\"wp-image-974\"\/><\/a><\/figure>\n\n\n\n<p>Use Squirrel or AngelScript for Scripting. Squirrel is a bit better choice. Lua has odd syntax so I do not recommend it, besides Squirrel is same as Lua with C++ like syntax.<\/p>\n\n\n\n<p>You may use xml files for data input to engine and resources.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Game Scripting Mastery \u2013 Alex Varanese<\/p>\n\n\n\n<p><strong>4. Audio<\/strong>&nbsp;\u2013 (Need to set sound sources in Editor, for living, breathing world)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/swbf2.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/swbf2.jpg?w=471&amp;h=353\" alt=\"swbf2\" class=\"wp-image-663\"\/><\/a><\/figure>\n\n\n\n<p>Use DirectSound or XAudio (Windows only), OpenAL (on all platforms).<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Beginning Game Audio Programming (Direct Sound) \u2013 Mason McCuskey, OpenAL_Programmers_Guide, OpenAL_PGuide (Programmers Reference), EffectsExtensionGuide<\/p>\n\n\n\n<p><strong>5. Editor<\/strong>&nbsp;\u2013 (Create Worlds, Set Sound, Put Characters and Dynamic Objects, Set AI Routines for Creatures)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/10\/v1-8.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/10\/v1-8.jpg?w=470&amp;h=293\" alt=\"v1 (8)\" class=\"wp-image-921\"\/><\/a><\/figure>\n\n\n\n<p>Use MFC for Windows only Editor (It will let you make Editor easily and fast). Use wxWidgets for Cross Platform Editor (which is a better choice then MFC)<\/p>\n\n\n\n<p>Use UnrealEd and CryEngine Sandbox Editor to see what features should be in a game editor.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Programming Windows 5th Ed \u2013 Charles Petzold, Programming MS Visual Cpp 5th Ed \u2013 David Kruglinski, Cross-Platform GUI Programming with wxWidgets<\/p>\n\n\n\n<p><strong>6. AI<\/strong>&nbsp;\u2013 (Artificial Intelligence for characters and creatures in game world)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/hl2ep21.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/hl2ep21.jpg?w=472&amp;h=354\" alt=\"hl2ep2\" class=\"wp-image-680\"\/><\/a><\/figure>\n\n\n\n<p>AI custom code.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Programming Game AI by Example \u2013 Mat Buckland, The Quake III Arena Bot \u2013 Thesis \u2013 JMP Van Waveren, Killzone2AI_Hierarchically-Layered-MP-Bot_System,&nbsp;The Unauthorized Halo 2 Battle Guide,&nbsp; AI Techniques for Game Programming \u2013 Mat Buckland<\/p>\n\n\n\n<p><strong>7. Gameplay<\/strong>&nbsp;\u2013 (Scripts)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/cr3_1.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/cr3_1.jpg?w=467&amp;h=264\" alt=\"cr3_1\" class=\"wp-image-706\"\/><\/a><\/figure>\n\n\n\n<p>Use Scripting.<\/p>\n\n\n\n<p>Use Free 3D Models and Textures available on internet for prototyping, or models that come with other games. But use your own 3D Models and Textures in final game.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Focus on Mod Programming in Quake III Arena \u2013 Shawn Holmes, Quake 4 Mods For Dummies \u2013 Erik Guilfoyle, Refer to Source code of Quake 2, Quake 3, Doom 3 (GPL License), Quake 4, Enemy Territory Quake Wars, Prey, Sauerbraten available freely on net, Secrets of The Game Business \u2013 Francois Laramee<\/p>\n\n\n\n<p>For other Game Types read more books, implement different AI.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Programming Role Playing Games with DirectX9 2nd Ed \u2013 Jim Adams, Strategy Game Programming with DirectX 9.0 \u2013 Todd Barron<\/p>\n\n\n\n<p><strong>8. Networking<\/strong>&nbsp;\u2013 (Need to know what to send over network for multiplayer)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/ut3.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/ut3.jpg?w=475&amp;h=261\" alt=\"ut3\" class=\"wp-image-699\"\/><\/a><\/figure>\n\n\n\n<p>Windows Sockets (windows), Posix (Linux or Linux Specific). SDL_Net for hassle free Cross Platform Networking.<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Multiplayer Game Programming \u2013 Todd Barron, Refer OpenTNL(Torque Network Library), Quake 2 source code, Quake3 Networking Model, Torque3D engine source, Latency Compensating Methods in Client\/Server In-game Protocol Design and Optimization \u2013 Yahn W. Bernier, Source Engine Networking Lag Compensation, Tribes 2 Networking Model, The Unreal Networking Model \u2013 Tim Sweeney<\/p>\n\n\n\n<p><a href=\"http:\/\/gafferongames.com\/2009\/01\/25\/game-networking-resources\/\">http:\/\/gafferongames.com\/2009\/01\/25\/game-networking-resources\/<\/a><\/p>\n\n\n\n<p>Use SDL_Net or RakNet.<\/p>\n\n\n\n<p><strong>&nbsp;9. Creating Artwork<\/strong>&nbsp;\u2013 (To make Objects and Characters in game world)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/ue4-7.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/09\/ue4-7.jpg?w=470&amp;h=264\" alt=\"ue4 (7)\" class=\"wp-image-834\"\/><\/a><\/figure>\n\n\n\n<p>2D Textures \u2013 Adobe Photoshop (or free GIMP). Texture Maker<\/p>\n\n\n\n<p>3D Models \u2013 Maya (or free Blender), Z- Brush,&nbsp; 3D Coat, Allegorithmic Substance Designer<\/p>\n\n\n\n<p>Terrains \u2013 World Machine<\/p>\n\n\n\n<p>Free Models and Textures are available on internet for prototyping. But use completely free or your own or legally licensed models and textures in final game. (CC (Creative Commons) license art work can be only used in free programs. For commercial use contact the author for another license, since art work is generally available under dual license.)<\/p>\n\n\n\n<p>Books&nbsp;\u2013 Ultimate Game Design Building Game Worlds \u2013 Tom Meigs<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/ts3.jpg\"><img decoding=\"async\" src=\"https:\/\/nexon7.files.wordpress.com\/2013\/03\/ts3.jpg?w=467&amp;h=348\" alt=\"ts3\" class=\"wp-image-698\"\/><\/a><\/figure>\n\n\n\n<p>Game Making is a lot of work even if you use a already used famous engine like Unreal Engine 4. It is highly time consuming so decide what you want to do in life and accordingly choose a career. Do the work you enjoy most while Earning Money through it to live a better life. For Business Aspect of Game Development search Google for interviews of famous Game Developers like Tim Sweeney and Indie Developers and accordingly try to do your best.<\/p>\n\n\n\n<p>Congratulations. You now have your own Single-player Multi-Player FPS. Sell it, Open Source the code , Play it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you just want to make a game i.e you are more of a designer, then use Unreal<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"_links":{"self":[{"href":"https:\/\/athenswonder.com\/index.php?rest_route=\/wp\/v2\/posts\/86"}],"collection":[{"href":"https:\/\/athenswonder.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/athenswonder.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/athenswonder.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/athenswonder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=86"}],"version-history":[{"count":1,"href":"https:\/\/athenswonder.com\/index.php?rest_route=\/wp\/v2\/posts\/86\/revisions"}],"predecessor-version":[{"id":87,"href":"https:\/\/athenswonder.com\/index.php?rest_route=\/wp\/v2\/posts\/86\/revisions\/87"}],"wp:attachment":[{"href":"https:\/\/athenswonder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=86"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/athenswonder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=86"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/athenswonder.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=86"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}