1. Home
  2. /
  3. Monogame
  4. /
  5. FPS Display Example

FPS Display Example - Monogame Typing CST Test

Loading…

FPS Display Example — Monogame Code

Displays frames per second on screen.

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;

public class FpsDisplay : Game
{
	private GraphicsDeviceManager _graphics;
	private SpriteBatch _spriteBatch;
	private SpriteFont _font;
	public FpsDisplay() { _graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; IsMouseVisible = true; }
	protected override void LoadContent() { _spriteBatch = new SpriteBatch(GraphicsDevice); _font = Content.Load<SpriteFont>("Arial"); }
	protected override void Draw(GameTime gameTime)
	{
		GraphicsDevice.Clear(Color.CornflowerBlue);
		_spriteBatch.Begin();
		int fps = (int)(1 / gameTime.ElapsedGameTime.TotalSeconds);
		_spriteBatch.DrawString(_font, $"FPS: {fps}", new Vector2(10,10), Color.White);
		_spriteBatch.End();
		base.Draw(gameTime);
	}
}

Monogame Language Guide

MonoGame is an open-source, cross-platform game development framework written in C# and based on Microsoft’s XNA framework. It enables developers to build 2D and 3D games for multiple platforms using a single codebase.

Primary Use Cases

  • ▸2D and 3D games
  • ▸Cross-platform indie games
  • ▸PC, mobile, and console games
  • ▸Educational game development
  • ▸Prototyping and experimental game projects

Notable Features

  • ▸C# and .NET development
  • ▸2D and 3D rendering support
  • ▸Cross-platform deployment
  • ▸Low-level graphics API access (DirectX, OpenGL, Metal)
  • ▸Audio, input, networking, and shader support

Origin & Creator

MonoGame was created as an open-source implementation of Microsoft XNA in 2009 by Xamarin contributors, continuing XNA’s legacy for cross-platform development.

Industrial Note

MonoGame is popular for developers who want XNA-style development in C# with multi-platform deployment, including Windows, Mac, Linux, iOS, Android, consoles, and web via WebAssembly.

Quick Explain

  • ▸MonoGame allows developers to create games using C# and .NET, offering tools and libraries for graphics, input, audio, and networking.
  • ▸It supports both 2D and 3D games and provides low-level access to rendering pipelines for flexibility and performance.
  • ▸Used by indie developers, hobbyists, and commercial studios to target Windows, consoles, mobile, and web platforms.

Core Features

  • ▸Game loop and rendering system
  • ▸Sprite and texture management
  • ▸Physics integration via third-party libraries
  • ▸Audio playback and effects
  • ▸Keyboard, mouse, touch, and gamepad input

Learning Path

  • ▸Learn C# and .NET basics
  • ▸Understand Game loop and SpriteBatch
  • ▸Practice asset loading via Content Pipeline
  • ▸Implement input, audio, and physics
  • ▸Deploy to multiple platforms

Practical Examples

  • ▸2D platformer
  • ▸Top-down shooter
  • ▸Puzzle game
  • ▸3D adventure game
  • ▸Multiplatform indie game

Comparisons

  • ▸MonoGame vs Unity: code-driven vs editor-driven
  • ▸MonoGame vs Godot: C# and code-centric vs GUI-based
  • ▸MonoGame vs Defold: C# multi-platform vs Lua lightweight 2D
  • ▸MonoGame vs Unreal Engine: lightweight code vs AAA engine
  • ▸MonoGame vs GameMaker Studio: full-code vs visual scripting

Strengths

  • ▸Powerful C# ecosystem
  • ▸Cross-platform support including consoles
  • ▸Flexible low-level rendering and 3D support
  • ▸Active community and extensive tutorials
  • ▸Good for both 2D and 3D games

Limitations

  • ▸No visual editor; code-only workflow
  • ▸Requires C# and .NET knowledge
  • ▸Smaller asset marketplace compared to Unity/Unreal
  • ▸Manual management of scenes and resources
  • ▸No built-in physics engine (needs third-party)

When NOT to Use

  • ▸Rapid prototyping with no coding
  • ▸Small 2D games needing drag-and-drop editor
  • ▸AAA engine-specific tools needed
  • ▸VR/AR projects requiring specialized SDKs
  • ▸Projects needing large asset marketplaces

Cheat Sheet

  • ▸Game class = main loop
  • ▸Update() = logic update
  • ▸Draw() = rendering call
  • ▸SpriteBatch = 2D rendering tool
  • ▸Content Pipeline = asset management

FAQ

  • ▸Is MonoGame free?
  • ▸Yes - fully open-source.
  • ▸Does it support 2D and 3D?
  • ▸Yes - supports both 2D and 3D games.
  • ▸Which platforms are supported?
  • ▸Windows, macOS, Linux, iOS, Android, and consoles.
  • ▸Is it beginner-friendly?
  • ▸Moderate; requires C# knowledge.
  • ▸Does it have visual editor?
  • ▸No - code-centric development only.

30-Day Skill Plan

  • ▸Week 1: C# basics and Hello World
  • ▸Week 2: 2D rendering and SpriteBatch
  • ▸Week 3: Input handling and events
  • ▸Week 4: Physics integration and 3D basics
  • ▸Week 5: Cross-platform builds and optimization

Final Summary

  • ▸MonoGame is an open-source C# framework for 2D and 3D cross-platform game development.
  • ▸It offers low-level rendering, asset management, input handling, and audio support.
  • ▸Ideal for developers familiar with C# who want code-driven, flexible, and performant games.
  • ▸Supports a wide range of platforms including desktops, mobile, and consoles.
  • ▸Best suited for indie, hobbyist, and commercial game projects where full control is required.

Project Structure

  • ▸Program.cs - entry point
  • ▸Game1.cs - main game loop
  • ▸Content/ - assets (textures, sounds, fonts)
  • ▸Screens/ - optional scene management
  • ▸Libs/ - third-party libraries

Monetization

  • ▸Mobile ads
  • ▸In-app purchases
  • ▸Paid game releases
  • ▸Console marketplace releases
  • ▸Indie commercial projects

Productivity Tips

  • ▸Use Content Pipeline efficiently
  • ▸Separate logic into GameComponents
  • ▸Profile frequently
  • ▸Use texture atlases for performance
  • ▸Leverage C# features for code reuse

Basic Concepts

  • ▸Game loop: Update() for logic, Draw() for rendering
  • ▸Content Pipeline: asset processing and loading
  • ▸SpriteBatch: efficient 2D rendering
  • ▸Game Components: modular systems
  • ▸GameTime: delta timing for consistent updates

Official Docs

  • ▸https://www.monogame.net/
  • ▸https://docs.monogame.net/
  • ▸https://github.com/MonoGame/MonoGame

More Monogame Typing Exercises

MonoGame Simple Counter ExampleMonoGame Sprite Movement ExampleMonoGame Simple Animation ExampleMonoGame Keyboard Input ExampleMonoGame Mouse Input ExampleMonoGame Simple Physics ExampleMonoGame Enemy Follow ExampleMonoGame Simple Shooting ExampleMonoGame Simple Random Walker Example

Practice Other Languages

CReactPythonC++RustTypeScriptKotlinPHPJavaC#RubyMqlCqlN1qlCypher