GithubHelp home page GithubHelp logo

seclerp / oxyengine Goto Github PK

View Code? Open in Web Editor NEW
18.0 4.0 2.0 20.09 MB

:video_game: OxyEngine - 2D full-featured open-source crossplatform game engine

Home Page: http://oxyengine.org

License: MIT License

C# 100.00%
game-development game-engine csharp 2d-game-engine 2d-graphics 2d-game-framework game-framework python cross-platform-development c-sharp mono

oxyengine's Introduction

OxyEngine

OxyEngine is a full-featured cross-platform 2D game engine that allows you to develop games using C# and Python.

πŸ’¬ βœ… develop master
Gitter chat BCH compliance Build status Build status

❗❗❗ Please note: This project in alpha stage of development at that moment. Do not use it for any production projects before first public release will be published. For now, OxyEngine does not guarantee backward compatibility of API and stability of your code.


Getting Started

These instructions will get you information to get started with engine.

Prerequisites

Mono

If you are on Linux or MacOS, you need to install Mono SDK for debugging and running .NET executables.

Latest Mono SDK can be found here.

MonoGame

You need to install MonoGame SDK to compile assets and using ready-to-use remplates.

Latest MonoGame SDK can be found here.

Tutorials

You can found tutorials on the wiki page.

Compatibility

Desktop

OxyEngine has only 2 native dependencies for Desktop from MonoGame: OpenAL and SDL2. Both of them are shipped with MonoGame.

More info in first tutorial.

Installing

This section will show you how to install OxyEngine into your .NET project.

From NuGet (preffered)

Latest stable release

Latest release you can find on NuGet.org.

Developer build

Every successful builded commit to develop branch push new nuget package to our custom NuGet feed:

MyGet feed (v3): https://www.myget.org/F/oxyteam/api/v3/index.json

MyGet feed (v2): https://www.myget.org/F/oxyteam/api/v2

After adding feeds, install Oxy.Engine NuGet package.

Building from sources (advanced)

To install stable version of OxyEngine into your .NET Core App:

  1. Π‘lone this repository: git clone https://github.com/OxyTeam/OxyEngine.git Use master branch for only stable and production-ready code. You also can use default branch, but it may be unstable.
  2. Select preffered configuration and Build solution.
  3. Reference OxyEngine.dll and other dependencies to you project.

Examples

Quick start

Changelog

See CHANGELOG.md for changes.

Built With

OxyEngine uses some third-party libraries and tools:

  • MonoGame - One framework for creating powerful cross-platform games.
  • IronPython - the Python programming language implementations for the .NET platform.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use Semantic Versioning for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details

Acknowledgments

Big thanks to:

  • Love2d team for inspiration for OxyEngine API.
  • Guys from MonoGame team for great cross-platform game framework.
  • IronLaungages developers for supporting and development of IronPython and other Iron languages.

oxyengine's People

Contributors

seclerp avatar svetomech avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

oxyengine's Issues

Support for matrix transformations

Also need class for Matrix

Support for

  • transform
  • rotate
  • scale

Methods' signature proposal:
void Graphics.PushMatrix()
void Graphics.PopMatrix()
void Graphics.Transform(float x, float y)
void Graphics.Rotate(float r)
void Graphics.Scale(float x, float y)

Add logging

Add class Debug for logging every error and Engine/Framework resource loading, graphics errors, etc.

Logging into the .txt file and in console (optional)

Configure Doxygen

Configure Doxygen to generate correct documentation for the project

Bitmap font support

Bitmap font will generate Font or (derived class) from Texture and character list

Methods' signature proposal:
Resources.NewBitmapFont(string texturePath, string characters)
Resources.NewBitmapFont(Texture bitmap, string characters)

Basic primitive drawing

Support for drawing

  • circles
  • rectangles
  • polygons
  • lines
  • dots

Using both fill and line modes.

Methods' signature proposal:
Graphics.SetLineThickness(float th)

Graphics.DrawCircle(string style, float x, float y, float r)
Graphics.DrawRectangle(string style, float x, float y, float w, float h)
Graphics.DrawPolygon(string style, params int[] xy)
Graphics.DrawLine(int x1, int y1, int x2, int y2)
Graphics.DrawDot(int x1, int y1)

Fix README

  • Fix Nuget link for MyGet feed package
  • Fix Nuget link for Nuget.org link
  • Fix newline for MyGet v2 and v3

Add support for gamepads

Add support for gamepad input (buttons, sticks)
Create mapping in InputMap and methods in input module (using OpenTK)

Basic TTF font printing

Also support for default font
Proposal: Verdana

Methods' signature proposal:
Graphics.SetFont(Font font, int size)
Graphics.Print(string text, float x, float y, float r, float sx, float sy)

Update .md files

README.md

Readme is outdated since we moved from .NET Core -> Mono (plain) -> MonoGame.

  • rewrite Getting Started guide and move it to Wiki
  • rewrite Installation guide and move it to Wiki
  • update information about OxyEngine and OxyPlayground
    • update Built With
    • update Acknowledgments

CROSSLIBS.md

Remove or rewrite

COMPATIBILITY.md

Remove or rewrite

Texture loading support

Supported formats:

  • png
  • jpg
  • maybe something else?

Methods' signature proposal:
Texture Resources.LoadTexture(string libraryPath)

Entity Component System

Implement Entity-Component-System, with basic ready to use:

Entities:

  • GameEntity (base class)
  • TransformEntity (entity with transform)

Components:

  • GameComponent (base class)
  • TransformComponent (for position, rotation, scale)
  • SpriteComponent (for drawing Texture with Rectangle)
  • FigureComponent (for drawing primitives)
    • RectangleComponent
    • CircleComponent
    • LineComponent
    • PolygonComponent
    • PointComponent
  • AudioEffectPlayerComponent (for playing audio)
  • SongPlayerComponent (for playing ambients)

System:

  • GameSystem (base system)
  • RenderSystem
  • LogicSystem

Basic audio support

Add support for basic playing sounds and music (only wav for first time, without audio streaming)

Methods' signature proposal:
AudioObject Audio.NewSource(string fileName, string type)
void AudioObject.SetLoop(bool loop)
void AudioObject.Play()
void AudioObject.Pause()
void AudioObject.Stop()

Font loading support

Supported formats:

  • ttf
  • otf

Methods' signature proposal:
Font Resources.LoadFont(string path, float size)

Basic texture drawing

Also this task include writing default GLSL shader that accepts color and texture

Method signature proposal:
Graphics.Draw(TextureObject texture, float x, float y, float r, float sx, float sy)

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.