Giter Club home page Giter Club logo

gamedevelopmentlinks's Introduction

Game-Development Links

This is a collection of useful game-development links including, but not restricted to, development with MonoGame.

During the process of developing our game I came across a large variety of websites that I found very useful.
This page is a collection of all of them baring a short description. I will check in every month or so and update this list accordingly.
Let me mention that I didn't record those links in any particular order and that the sites, I link to in this section, may contain much more than the description of the link suggests. Chances are that I didn't even look through each and every page of every single site before finding it helpful and bookmarking it. These are just the pages I found searching for solutions for the problems in the various fields of interest you inevitably stumble over when starting to write a game.

I tried to sort every link-table it in a way that should benefit your learning curve (most complex subjects last).

If you want to contribute just fork this repo, make changes and then a pull request.

Contributions are welcome!

Don't forget to star this repo.

Table of Contents

Theory

Link Lists

Here are other link-lists to browse.

Tutorial Sites

No specific order.

  • Shawn Hargreave's Blog - This is a must-read for every XNA developer. The blog of the Master himself.
  • XNAdevelopment - Great beginners tutorials around XNA game development.
  • Catalin Zima's Blog - You should all know this one (and you will, I promise). Good examples. I would say that most of the content in here is for the advanced beginner.
  • Riemer's XNA Tutorials - Flood of useful tutorials. I found it a bit untidy in a way.
  • digitalerr0r - HLSL tutorials for every level of expertise. Nice guy but sort of retired, sadly.
  • Kyle Schouviller's Blog - Good tutorials. Focus on content and tooling.
  • RB Whitaker's Wiki - Extremely versatile. Covers almost every aspect of XNA game development. Many thanks.
  • Threading in C# - A must-read for every programmer.
  • XNA Game Tutorials - Some XNA game tutorials (2D collision, etc…)
  • The Darkside of MonoGame - New tutorial series delivering both Video and Text tutorials on the latest MonoGame content

Lookup Tables

This section contains tables that I found useful during game-development.

  • Color Charts - You want to set a color, but you can't see it? This site has proven most useful for me. There is not a single day that I don't visit it. It contains all the named colors you may use directly in XNA (or windows respectively), sorted the way you want. He has some more stuff going on at his blog, but frankly I didn't have the time to look into it.

Mathematics And Stuff

This section contains articles about mathematical problems. You can't do without.

  • Sketching with Math and Quasi Physics - Extremely nice graphical representations of much of the math you're gonna be using when developing a game.
  • Trajectory Calculations - Want your bullet to fly the right way? These links show you how to do the necessary math for a 3D trajectory.
  • Solving Ballistic Trajectories - Nice article that contains all the math and explains it very well. Features a GitHub repo containing all the code.
  • Ballistic Trajectory
  • Curve-Path
  • Calculate a bounce-angle - Want your ball to bounce off the wall? This StackOverflow topic shows you how to do the necessary math.
  • Collision Detection Overview in XNA - You want the monster to die, when you hit it? This is a good and very general overview. It describes the procedure using XNA-datastructures (which isn't always the best choice), but I think that this is a "must read".
  • Line Intersection - You have intersecting lines but you don't know the intersection point? Helpful formulas when wanting to know the intersection-point of lines in general.
  • Intersection Tests - You want to know the point where the bullet hit the plane? This is THE site containing an abundance of intersection tests for various geometric primitives. Must read. Thank you very much Miguel Gomez.
  • Wiki-page for SAT - Good explanation with some helpful diagrams.
  • Separating Axis Theorem (SAT) - You want to know, if the ray hit the polygon? By the way: AABB means Axis-Aligned-Bounding-Box. This is a very interesting and helpful technique (and straight forward).
  • And another tutorial on the SAT - Great diagrams. Nice read.
  • SAT - Explained - And another one. You should be able to tell that this one is important from the number of articles here. This one has nice diagrams and a really good explanation.
  • Swept AABB Collision Detection And Response - Your sprites are moving through each other? Then you need sweep tests. This article here explains the stuff using Axis Aligned Bounding Boxes and shows a few possibilities on how to react on such collisions as well.
  • Swept AABB Collision Using Minkowski Difference - This one contains an Ray-to-AABB sweep test.
  • Intersection Tests in 2D - A nice overview over the various methods you can do collision detection with, including sweep testing.
  • Collision Detection And Response - A very nice article about the separating axis theorem (SAT) used for collision detection. No sweep tests here.
  • Simple Intersection Tests For Games - This is a nice article describing a wide variety of sweep tests, like sphere-plane, sphere-sphere and so on. Contains some code as well.
  • Generating Fantasy Maps - A site explaining the process of procedurally generating 2D maps with rivers, towns, etc.
  • Island Generator - A nice tutorial on how to procedurally generate islands.

Programming Guides

This section contains tips about how to structure your programs or how to achieve certain tasks necessary for game-deployment.

General

  • Shadow-Copying of applications - You want your installer to delete itself in windows? You might come to a point where you'll end up writing your setup or updating your application, where you want to unload a program, that is currently running. In general that's not easily possible, but this project might help. We circumvented the issue by using a WIX setup (you are able to run programs before and afterwards that are not present on the disk, but in the GAC, which is very nice; We deleted the install-directory that way by running a C# deletion-program leaving no trace of the game whatsoever).
  • Repositioning the cursor - You want to reposition or clamp the windows cursor to or within a window? On a multi-monitor setup you should prevent the mouse cursor from leaving the monitor your customer is playing on. Here you'll find the proper interop-calls (I'm sure you know this site).
  • Saving the state of your game - You want to create a save-game? This is a very quick and elegant method to accomplish this by using XML.
  • Get special folders - You want to save your save-game in %appdata%? This page shows you how to get the paths of these special directories regardless of the version of windows your customer is running. Necessary to avoid "no write permission" errors on saving any game-data.
  • Multi CPU usage - You want to use all of the CPU cores on your customer's machine? You may want to use .NET's new parallels framework or, if you are stuck with an older .NET framework, write one of your own.
  • 'Non-Blocking' synchronization - You want your code synchronized without blocking waits? This is the premier-league of multi-threaded-programming. It's very difficult and subtle. Fasten your seatbelts, you're in for some ride.
  • Do Events and Delegates Create Garbage? - A nice article testing and explaining what creating and calling delegates and events (using lambda or not) does in respect to garbage.
  • Decompress DXT textures - You want to manually decompress DXT Format Files? There are not many reasons for you to want to do this, but nevertheless. Here it is.
  • The Guide To Implementing 2D Platformers - Avery comprehensive guide covering almost all aspects of such an endeavor.
  • Super Nerd Boy - Mike's Blog about the experience of making a 2D platformer hero jump the right way.

AI

  • Pathfinding.js - A very nice graphical animated presentation of the most common pathfinding algorithms. Very nice way to visualize the differences.
  • Introduction to A-Star - One of the nicest explainations I've ever read. Interactive too.
  • A Star Example - A good in-depth introduction and the article points to a few production-ready implementations as well.
  • XNA Game Studio - Pathfinding - The good old article about an A-Star implementation from MS.
  • Path-Finding - You want your hero to find the right way? This is a good implementation of the A-Star Algorithm. You have to modify it of course, because the garbage collector would kill you in no time, but it's a good starting point.
  • A-Star algorithm implementation in C# - A CodeProject article explaining much about the A-Star algorithm and has a production-ready implementation to download.
  • Shortest Path - A nice explanation of the Jump-Point-Search algorithm along with illustrations.
  • EpPathFinding - A nice C# library that comes with a demo, is production ready and implements the Jump-Point-Search algorithm.
  • SharpNav - A complete and portable pathfinding library in C#. MIT license.

XNA / MonoGame

Graphics And Effects

  • Using shaders - You want to use shaders and don't know what that is? Then this site is a good place to start.
  • Worl- View- and Projection Transformation Matrices - A really nice article along with images covering the basics of transformation matrices and how they are commonly used in 3D graphics programming.
  • 3D model drawing guide - You want to draw a 3D model in XNA? This guide shows, step by step, how to draw a mesh in XNA. Nicely done, thank you very much.
  • 2D circles and lines - Want to draw 2D using XNA?Well. Then you're in for a treat! It's impossible to do that without completely destroying the performance of your game. But since you're inevitably sitting on a high-performance-graphics-workhorse already, you may draw 3D as well. These links show you how.
  • 2D circles and lines
  • Premultiplied alpha and alpha-blending - You want to understand the intricacies of this subject? Well. Here is the Master of XNA for you. May I present: Shawn Hargreaves...
  • Post processing effects - You want a bloom-filter? This tutorial explains the usage and limitations of such an effect.
  • Dynamic 2D shadows - You want a flashlight in your 2D game? This is one of the most popular tutorial-sites out there. I cannot thank Catalin enough for his efforts making this site.
  • Depth-Sorting sprites - Shawn Hargreaves himself on how to order your sprites before drawing.
  • The half-pixel offset - In XNA or MonoGame driven games you will see a Vector(.5f, .5f) added on a projection matrix sometimes. Here is why.
  • And another one on the half-pixel - This is Microsofts explanation for it.
  • Premultiply Alpha for textures loaded via FromStream - This is a snippet of code that leverages the GPU to quickly premultiply alpha for textures that are loaded using Texture2D.FromStream which bypasses the preprocessing provided by the content projects.
  • How to Generate Shockingly Good 2D Lightning Effects - Lightning has plenty of uses in games, from background ambience during a storm to the devastating lightning attacks of a sorcerer. In this tutorial, the author explains how to programmatically generate awesome 2D lightning effects: bolts, branches, and even text.
  • Geometry Tracks - Tire Tracks Tutorial - Another fine tutorial by Kosmonautgames about how to generate 2D or 3D trails and tracks. Thank you so much for your great posts.
  • Drawing Antialiased Lines With OpenGL - Nice article describing a method to generate smooth lines using primitives.
  • 2D Visibility - Nice article explaining 2D visibility with a ray-casting algorithm. You know, the videos of 2D games where you move a lightsource and the visibility-fog moves around in real-time. With examples in Haxe 3, a cross platform compiling language. So it's almost certain that you can use the code directly. MIT-like license. So nice for commercial use as well.
  • Deferred Rendering In XNA - A nice tutorial from Catalin Zima explaining the basics of deferred rendering providing code examples.
  • 2D Deferred Lighting - A nice article explaining several 2D lighting techniques. Nice read.
  • How to project decals - A Wolfire blog post about how to project your decals in 3D.

Networking

  • What Every Programmer Needs To Know About Game Networking - Very nice and short article describing the basics of game networking.
  • Lidgren.Network – an introduction to networking in C# games - A nice article that walks you through a simple client and server written with Lidgren.
  • Steamworks.NET integration in MonoGame - Marcel Härtel has a gem here. A nice repo containing an simple MonoGame project with full Steamworks.NET integration. So if you've wondered how to integrate that library in the best possible way, this is a perfect start.
  • Making Fast-Paced Multiplayer Networked Games is Hard - Fast-paced multiplayer networked games over the Internet are difficult to develop to a standard where the experience is still fun. This post is from a developer talking about the caveats of network programming. Very interesting read. Covers all the basics / intermediate stuff.
  • Source Multiplayer Networking - The developers of Valve tell you about how they are handling the many multiplayer-games made with their engine. This article is full of basic stuff you should know about and much hands-on data like how often your server should talk to the clients per second and so on. Nice read.

Spatial Partitioning

  • Spatial Partitioning - Spatial Partitioning - an overview.
  • CollisionGrid - This is the way to go for evenly distributed objects in a small 2D space.
  • Quadtree - This is the way to go for unevenly distributed objects in a 2D space.
  • Octree - This is the way to go for unevenly distributed objects in a 3D space.

HLSL Shaders

  • Graphics Pipeline Diagram - You are stuck programming your shader and don't know what happens and when? This is a very popular site about XNA game development in general. This particular page contains a very useful diagram of the graphics rendering pipeline, that may lighten things up a bit during dark, non-comprehending times (you will have that, I promise).
  • HLSL language reference - Want to know how HLSL works? This is Microsoft's HLSL reference. Nothing more, nothing less.
  • Crash Course in HLSL - A crash-course in HLSL covering vertex- and pixel-shaders from the almighty Catalin Zima.
  • Dark Secrets of Shaders - A ATI article about shader optimizations in general. Great read.
  • Specifying Compiler Targets - The Microsoft reference for specifying compiler targets in HLSL shaders. A nice list and explanation of the shader-levels supported by DX.
  • Direct3D Feature Levels - A list and explanation of the various feature levels and of what effects and resources you are allowed to use with each.
  • Wiggle Effect - Want your background to wiggle? Then this tutorial is for you. Presented to you by digitalerr0r, a great site for HLSL tutorials.
  • XBR - Filter - Nice code for implementing an xBR filter that helps you to upscale your sprites without showing pixels. Thanks to Jjagg and Kosmonautgames for adapting that code for MonoGame.
  • Bloom Post Process Filter - Want your game to shine? This tutorial explains the use of post process filters and the bloom filter. Many pictures. Expertly commented. Recommended.
  • GPU Driven Terrain Mapping - You want to render your terrain given a low-res terrain-map-texture? This example uses a low-res terrain-map-texture (where the information which tile to draw is encoded in the colors) to render a terrain. Advanced and only usable under certain circumstances, but worth the time.
  • Deferred Engine Playground - Deferred rendering engine written to make developing and understanding custom shaders easier.
  • ShaderFrog - A online web-based shader editor providing WYSIWYG. Nice project.
  • WPF Shader Effects Library - This one contains many cool effect files easy to adopt for your game. It's under the Ms-PL license which should be ok as long as you don't publish the source-code. There is a video demonstrating the effects along with a narration.
  • Maximizing Depth Buffer Range and Precision - The guys from Outerra explain some ways to enhance depth-buffering on current hardware.
  • Depth Precision - Another short article about the precision of a depth buffer and how to enhance it. Features a nice graph-calculator.
  • Creating Vast Game Worlds - Avalanche Studios - A nice presentation from the SigGraph 2012 conference featuring many screenshots. They talk about how to make such huge worlds work, the impact on the rendering engine, the scene-design and the player.

Audio

  • XACT audio tutorials - You want to make noise, but you don't know how? This is a very elaborate collection of very useful tutorials starting from "Audio in XNA" and ending with "3D Audio Effects". Very straight forward and many screenshots.
  • Attenuation / Doppler pitch shifting in XACT - You want your close sprites to be louder than the ones far away? Very elaborate Microsoft tutorial on creating attenuation and doppler-pitch-shifting using XACT. Nice, step by step and many screenshots.

Procedural Generation

Practice

Components

This stuff here is either directly ripped from our game or from other libraries. For you to take and use as you like.

  • Object Pool - This is a lock-free object pool. One of the integral parts of a game-engines.
  • Collision Grid - Used in the broad-phase of collision detection. Faster than a Quad-Tree. Description is inside.
  • SplitStopWatch - Want to debug timings and you like a pretty console-output using split-times, etc? Take this.
  • ThreadPool - Want to do async work but the methods you like to call all have different signatures? This is a very fast implementation of a fill-and-start thread pool.
  • Per Pixel Collision - Want to know how to do matrix-transformations? Want to know if two textures collide with pixel-precision? Take this, but read the readme.md first. It explains why using this technique in a production environment is a bad idea.
  • XNA Examples - MonoGame Port - An almost complete MonoGame port of the good old XNA examples from MS.

Libraries

Here you find game-engines, extensions, etc.

Game Engines

  • MonoGame Github stars - XNA continued! By leveraging C# and other .NET languages on Microsoft and Mono platforms you can write modern, fast, and reliable game code.
  • MonoGame.Extended Github stars - An awesome extension library for MonoGame dealing with additional stuff that was out-of-scope for MonoGame.
  • Nez Github stars- Another great extension library. Very comprehensive.
  • Corund Github stars - Corund is a 2D game engine for mobile games, based on Monogame (open implementation of XNA). Inherit from a variety of existing objects and behaviours to easily compose a game or a prototype.

UI

  • EmptyKeys - A very cool multi-platform UI library based on XAML.
  • Nuclex - An older framework written for XNA.
  • Nez Github stars - This extension library also contains a port of LibGDX Scene 2D UI.
  • Squid Github stars - SQUID is an SDK to create user interfaces for games and other 2D/3D realtime applications, using a Retained Mode system. SQUID does not depend on a certain rendering engine, you can use it with any engine you like, on any platform that supports the .NET 2.0 framework. Squid is free and maintained by IONSTAR Studios.
  • MonoGame Gui4U - Simple. A port from XNA Simple GUI
  • Neoforce-Mono Github stars - A MonoGame port of the NeoForce controls. Pretty comprehensive.
  • GeonBit.UI Github stars - Is the UI / HUD system of the GeonBit engine, exported as an independent MonoGame extension under the MIT license. It is a MonoGame-based game engine, designed to build 3d dungeon crawler and FPR (first person rogue) games.
  • Myra Github stars - A nice, albeit very young, GUI framework for MonoGame. Cool if you'd like to contribute.

Shadows / Lighting

  • Penumbra - 2D lighting with soft shadows for MonoGame.
  • LightingEngine - Felsir open-sourced his lighting code. Nice implementation. Give it a try.

Map Editors

  • Tiled - An awesome editor for all kinds of maps. Freeware and if you search for a MonoGame loader for the maps generated by this beauty, then look for MonoGame.Extended.

Networking

  • Lidgren - One of the major players when it comes to connecting your game-clients. Definitely worth a look.
  • RakNet - One of the major players as well.

Connectors

Tools

Build tools, deployment tools, etc.

  • ProtoBuild - If you wanna do cross-platform development this tool will help you to keep your project-files in order.

  • wyBuild - You want to have an updating game (maybe self-updating)? A tool to create and deliver AND install updates manually or automatically in any given .NET language. This one saved and saves our butts during the alpha-testing stage.

  • Convert to Icon - You want your own mouse-cursor? When programming a game in XNA you come to a point when you want your own mouse-cursor. This program helps you to convert your image-files to an icon-file. And it's completely online.

  • DXT Compression - You want to compress the textures of your game on your own? Normally you'd use the content-loader-pipeline of XNA (don't fear; the content-loader-pipeline does almost everything automatically), but if you can't use it, then you'll be stuck with this when you're trying to get compressed textures to your graphics-card.

  • Using Platform Specific Libraries from a Platform Agnostic Project - We've all had this problem. You want to use a library, but that comes in x86 or x64 flavor and your game should use the 'AnyCPU' target. This article describes how you can switch between the libraries on demand after editing the project file directly. Works like a charm, although it just determines the currently used context and replaces the files accordingly. So you cannot really build an 'AnyCPU' project using this method because the build-result will be fixed to the context used on your computer at compile-time.

    Installers / Setup

    • Inno Setup - This is a nice, free for commercial use, installer that is surprisingly versatile. Not really suited for more complex stuff.
    • WiX - Windows Installer XML - THE gold standard for building setups. Can get pretty messy with more complex stuff though.
    • NSIS - That's the installer package MonoGame uses for its installer. Nice to handle, open source.

Legal Stuff, Licenses

One important thing: When searching for legal advice concerning licenses you'll be pretty much out of luck. Most of the time people tell you that they won't give 'legal advice' since the legal ramifications resulting from such an advice are just too awful. So I won't do that either. You'll have to read for yourself and don't just take my word for it. So, for what it's worth, here are some useful links and the comments are just my humble opinion.

Copyright

If you'd like to make money with your game, these licenses here are your friends. They allow you to use the code / asset / whatever, retain the original license, maybe do some sort of attribution of the original author, but don't prohibit you selling your work for money.

Copyleft

Essentially and if there is no change in the text of the license in the work you're trying to use, the following licenses are viral. If you use code under such a license, you'll have to adapt your license to theirs. Not great if you'd like to make some money with your game later on.

  • Copyleft - Explanation of copyleft and what it's used for.
  • GNU GPL - Beware: Copyleft.
  • CC-BY-SA - Like CC-BY, but copyleft.

Artistic Material

All the sites I link to in this paragraph contain "free for commercial use" material, although they may contain non-free material as well. It's your responsibility to check before you use it.
You won't be able to dodge the fight with the even or odd license-text when dealing with creative content, so you might as well get over it and try to get a grasp on things.

Mixed

  • Open Game Art - A site containing a rather limited collection of open art, but still, worth a look.
  • Gamedeveloper Studio - Looking for game assets? Are you looking for professional quality assets for your games? Would you like to cut your development time in half? This site contains some royalty free content.

Would you prefer not to invest hundreds or thousands of dollars into your title?

Graphics

You want a sky-, grass- or other texture? These sites contain, besides other stuff, free-for-commercial-use textures.

Fonts

You want to write something on the screen without getting sued? These sites contain, besides other stuff, many free-for-commercial-use fonts (you'll have to read the licenses though).

Sounds

You've got no sound yet?These sites contain, besides other stuff, free-for-commercial-use samples.

gamedevelopmentlinks's People

Contributors

gufalcon avatar simondarksidej avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.