Git Product home page Git Product logo

consolegameengine's Introduction

ConsoleGameEngine

C# Graphics Library for drawing graphics in Windows Command Prompt

Olle Logdahl, 24 November 2018

downloads release licence issues


ConsoleGameEngine is a C# library that wraps around the System.Console class, adding enhanced functionality for displaying graphics. Implements a new ConsoleGame abstract, a custom buffer, custom color palette, fullscreen capabilites, input handling and more.

Installation / Getting Started

git clone https://github.com/ollelogdahl/ConsoleGameEngine.git


After installing you'll have to:

  1. Import ConsoleGameEngine.dll to project.
  2. Reference the namespace using ConsoleGameEngine;

Why?

I created this Library to make graphics more available for beginners and hobbyists alike. The first programs you create are usually made in the console, but when users want to migrate to actual graphics there is a steep learning curve. My ambition with this library is to depricate the need for psuedo-graphics in the console, usually done by moving the cursor, writing a short string and clearing the actual screen. Not only is that solution unintuitive in the long run, but also highly inefficient.

Uses

  • retro-terminal-styled games and applications
  • easy-to-use graphics library for basic and advanced graphics in games and applications
  • Creating heavy 3D graphics running in 4K

Does the last apply to you? Then sorry, this is not the library you are looking for.

Usage / Features

Library contains two main classes, ConsoleEngine and ConsoleGame

  • Custom character screen buffer, allows clearing and blitting to console window
  • Console colors with full rgb capabilities
  • Custom & premade Palettes, used for changing console window palette
  • Accessing and setting pixels individually
  • Functions to draw basic shapes and primitives (Triangles, Rectangles, Lines etc.)
  • Writing characters to screen using plain-text and FIGlet fonts
  • Multiple game loops, including fixed framerate and deltatime settings
  • Point and Vector class, for int and float positions
  • Setting console window settings, changing window size and running console borderless
  • Input handling

ConsoleEngine

Is used to draw to the screen, replacement for the System.Console class (kind of)

using ConsoleGameEngine;
...
Engine = new ConsoleEngine(windowWidth, windowHeight, fontWidth, fontHeight);

Engine.SetPixel(new Point(8, 8), ConsoleCharacter.Full, 15);

ConsoleGame

Keeps an instance of the ConsoleEngine and implements game loops.

Note Not neccessary, you could use the ConsoleEngine as is

using ConsoleGameEngine;
...

new AppName.Construct(windowWidth, windowHeight, fontWidth, fontHeight, FramerateMode.Unlimited);
class AppName : ConsoleGame {
  public override void Create() {
  }
  
  public override void Update() {
  }
  
  public override void Render() {
  }
}
Try out some example games over here

Notes

  • Color palette limited to 16 colors in a single session (this is an internal limitation, see MDSN)
  • Only ONE reference to a ConsoleEngine is allowed per session
  • Press Delete Key to close application if running in borderless

Links

Licensing

This project, and all code it contains, is licensed under The Unlicense and can be read here.

consolegameengine's People

Contributors

ollelogdahl avatar carsonddd avatar ktos avatar cwl157 avatar shanselman avatar whiteblackgoose 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.