* Removed Roadmap
The Roadmap seems to have been initially added to show the plans to switch to an FNA fork and act as a bridge for katabasis.  This is no longer the case for this repository as it will remain focused at the moment on MonoGame support only.

* Added new note at top of readme

* updated information for installing nuget

* Made using content pipeline extensions a section and not a quote

* Removed information about MyGet feed

* Removed patreon from readme

* Update License

* renamed master branch to main

* Remove community forum link
MonoGame is closing the community forums in favor of discord and github discussions

* Update workflows
This commit is contained in:
Christopher Whitley
2024-05-20 02:12:43 -04:00
committed by GitHub
parent 0a17af4829
commit 9a7ce46635
7 changed files with 64 additions and 153 deletions
@@ -3,44 +3,42 @@
### Clones the `develop` branch and performs a build, test, then pack of the ### Clones the `develop` branch and performs a build, test, then pack of the
### Monogame.Extended source code. Once the build job is finished, the deploy ### Monogame.Extended source code. Once the build job is finished, the deploy
### job will upload the nupkg files created to the MonoGame.Extended GitHub ### job will upload the nupkg files created to the MonoGame.Extended GitHub
### and NuGet sources.
### ###
### - Only runs on a push to the `develop` branch ### - Only runs on a push to the `develop` branch
### - Sets the IS_PRERELASE and BUILD_NUMBER environment variables which are
### picked up in the Directory.Build.props file to set the version suffix
### so the packages are build as prerelease packages.
################################################################################ ################################################################################
name: "Build MonoGame.Extended (Develop)" name: "Create Release"
on: on:
push: workflow_dispatch:
branches: develop inputs:
prerelease:
description: 'Is this a prerelease?'
required: true
default: 'true'
jobs: jobs:
build: build:
name: "Build MonoGame.Extended" name: "Build MonoGame.Extended"
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
IS_PRERELEASE: true IS_PRERELEASE: ${{ inputs.prerelease == 'true' }}
BUILD_NUMBER: ${{ github.run_number }} BUILD_NUMBER: ${{ inputs.prerelease == 'true' && github.run_number || '' }}
steps: steps:
- name: Clone Repository - name: Clone Repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
ref: develop
- name: Setup DotNet - name: Setup Dotnet
uses: actions/setup-dotnet@v4 uses: actions/setup-dotnet@v4
with: with:
dotnet-version: 6.0.x dotnet-version: 6.0.x
- name: Test MonoGame.Extended
run: dotnet test --nologo --verbosity minimal --configuration Release
- name: Build MonoGame.Extended - name: Build MonoGame.Extended
run: dotnet build --nologo --verbosity minimal --configuration Release run: dotnet build --nologo --verbosity minimal --configuration Release
- name: Test MonoGame.Extended
run: dotnet test --nologo --verbosity minimal --configuration Release
- name: Pack MonoGame.Extended - name: Pack MonoGame.Extended
run: dotnet pack --nologo --verbosity minimal --configuration Release run: dotnet pack --nologo --verbosity minimal --configuration Release
@@ -50,25 +48,27 @@ jobs:
name: build-artifacts name: build-artifacts
path: ./.artifacts/source/package/release/*.nupkg path: ./.artifacts/source/package/release/*.nupkg
deploy:
name: "Deploy NuGets"
runs-on: ubuntu-latest
needs: [ build ]
permissions:
packages: write
contents: write
deploy-job: steps:
name: "Deploy Nugets" - name: "Download Artifacts"
runs-on: ubuntu-latest uses: actions/download-artifact@v4
needs: [build] with:
permissions: name: build-artifacts
packages: write path: ./.artifacts
contents: write
steps: - name: "Push Packages"
- name: "Download Artifacts For Deploy" env:
uses: actions/download-artifact@v4 SOURCE_URL: ${{ inputs.prerelease == 'true' && 'https://nuget.pkg.github.com/craftworkgames/index.json' || 'https://api.nuget.org/v3/index.json' }}
with: API_KEY: ${{ inputs.prerelease == 'true' && secrets.GITHUB_TOKEN || secrets.NUGET_ACCESS_TOKEN }}
name: build-artifacts run: |
path: ./.artifacts PACKAGES=(".artifacts/*.nupkg")
for PACKAGE in "${PACKAGES[@]}"; do
- name: "Push Packages" dotnet nuget push "$PACKAGE" --source "$SOURCE_URL" --skip-duplicate --api-key "$API_KEY"
run: | done
PACKAGES=(".artifacts/*.nupkg")
for PACKAGE in "${PACKAGES[@]}"; do
dotnet nuget push "$PACKAGE" --source "https://api.nuget.org/v3/index.json" --skip-duplicate --api-key "${{ secrets.NUGET_ACCESS_TOKEN }}"
done
-70
View File
@@ -1,70 +0,0 @@
################################################################################
### Build MonoGame.Extended (Release)
### Clones the `main` branch and performs a build, test, then pack of the
### Monogame.Extended source code. Once the build job is finished, the deploy
### job will upload the nupkg files created to the MonoGame.Extended NuGet
### source.
###
### - Only runs when there is a new version release tag created.
################################################################################
name: "Build MonoGame.Extended (Release)"
on:
push:
tags:
- 'v*'
jobs:
build:
name: "Build MonoGame.Extended"
runs-on: ubuntu-latest
steps:
- name: Clone Repository
uses: actions/checkout@v4
with:
ref: main
- name: Setup DotNet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 6.0.x
- name: Test MonoGame.Extended
run: dotnet test --nologo --verbosity minimal --configuration Release
- name: Build MonoGame.Extended
run: dotnet build --nologo --verbosity minimal --configuration Release
- name: Pack MonoGame.Extended
run: dotnet pack --nologo --verbosity minimal --configuration Release
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: ./.artifacts/source/package/release/*.nupkg
deploy-job:
name: "Deploy Nugets"
runs-on: ubuntu-latest
needs: [build]
permissions:
packages: write
contents: write
steps:
- name: "Download Artifacts For Deploy"
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: ./.artifacts
- name: "Push Packages"
run: |
PACKAGES=(".artifacts/*.nupkg")
for PACKAGE in "${PACKAGES[@]}"; do
dotnet nuget push "$PACKAGE" --source "github" --skip-duplicate --api-key "${{ env.GITHUB_TOKEN }}"
dotnet nuget push "$PACKAGE" --source "https://api.nuget.org/v3/index.json" --skip-duplicate --api-key "${{ secrets.NUGET_ACCESS_TOKEN }}"
done
+2 -2
View File
@@ -9,7 +9,7 @@ Please read this document completely before contributing.
## How To Contribute ## How To Contribute
MonoGame.Extended has a `master` branch for stable releases and a `develop` branch for daily development. New features and fixes are always submitted to the `develop` branch. MonoGame.Extended has a `main` branch for stable releases and a `develop` branch for daily development. New features and fixes are always submitted to the `develop` branch.
If you are looking for ways to help you should start by looking at the [Open Issues](https://github.com/craftworkgames/MonoGame.Extended/issues). Please let us know if you plan to work on an issue so that others are not duplicating work. If you are looking for ways to help you should start by looking at the [Open Issues](https://github.com/craftworkgames/MonoGame.Extended/issues). Please let us know if you plan to work on an issue so that others are not duplicating work.
@@ -62,7 +62,7 @@ We accept contributions in "good faith" that it isn't bound to a conflicting lic
## Need More Help? ## Need More Help?
If you need help please ask questions on our [community forums](http://community.monogame.net/c/extended) or come [chat on Discord](https://discord.gg/xPUEkj9). If you need help, please ask questions in our [Discord](https://discord.gg/xPUEkj9), or you can ask questions in the official [MonoGame Discord](https://discord.gg/monogame).
Thanks for reading this guide and helping make MonoGame.Extended great! Thanks for reading this guide and helping make MonoGame.Extended great!
+2 -1
View File
@@ -1,8 +1,9 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2015-2020: Copyright (c) 2015-2024:
- Dylan Wilson (https://github.com/dylanwilson80) - Dylan Wilson (https://github.com/dylanwilson80)
- Lucas Girouard-Stranks (https://github.com/lithiumtoast) - Lucas Girouard-Stranks (https://github.com/lithiumtoast)
- Christopher Whitley (https://github.com/aristurtledev)
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
+22 -14
View File
@@ -1,4 +1,7 @@
> :warning: **If you are interested in helping out with the future and direction of this project**: Please direct message @lithiumtoast on Discord. > [!NOTE]
> Hi MonoGame community, MonoGame.Extended is currently being updated to resolve outstanding bug issues, included those surrounding Tiled, and to update for MonoGame 3.8.1.303. Please bear with me as I work through the backlog. You can follow the progress in the [v4.0.0 Milestones](https://github.com/craftworkgames/MonoGame.Extended/milestone/8) page.
>
> - AristurtleDev
![MonoGame.Extended Logo](logos/logo-banner-800.png) ![MonoGame.Extended Logo](logos/logo-banner-800.png)
@@ -12,12 +15,23 @@ MonoGame.Extended is a set of utilities (in the form of libraries/tools) to [Mon
Code is distributed as NuGet packages in the form of libraries (`.dll` files). You can easily install the NuGet packages into your existing MonoGame project using the NuGet Package Manager UI in Visual Studio or by using the command line interface (CLI) in a terminal. Code is distributed as NuGet packages in the form of libraries (`.dll` files). You can easily install the NuGet packages into your existing MonoGame project using the NuGet Package Manager UI in Visual Studio or by using the command line interface (CLI) in a terminal.
> :wrench: CLI **Current Stable Release**
`dotnet add package MonoGame.Extended` > [!WARNING]
> The current stable release is not compatible with MonoGame 3.8.1.303.
> :hammer: To use the content pipeline extensions, you will need to edit your `.mgcb` file to reference the `.dll`. To see an example of how to do this with NuGet see the samples at https://github.com/craftworkgames/MonoGame.Extended-samples. The important pieces are the `NuGet.config` file and the `.mgcb` file. ```sh
dotnet add package MonoGame.Extended --version 3.8.0
```
> :eyes: To access pre-releases including rolling builds of the repository after every commit or PR commit, you can see add the NuGet feed `https://www.myget.org/F/lithiumtoast/api/v3/index.json`. See https://github.com/craftworkgames/MonoGame.Extended-samples with the `NuGet.config` file for an example of how to setup the feed. **Current Prerelease**
> [!NOTE]
> Prerelease is based on current `develop` branch snapshot. There it is not considered stable and may contain bugs
```sh
dotnet add package MonoGame.Extended --version 3.9.0-prerelease.3
```
### Using the Content Pipeline Extensions
To use the content pipeline extensions, you will need to edit your `.mgcb` file to reference the `.dll`. To see an example of how to do this with NuGet see the samples at https://github.com/craftworkgames/MonoGame.Extended-samples. The important pieces are the `NuGet.config` file and the `.mgcb` file.
## Where to next? ## Where to next?
@@ -34,21 +48,15 @@ Code is distributed as NuGet packages in the form of libraries (`.dll` files). Y
We're in the process of developing MonoGame.Extended 4.0! Stay tuned. We're in the process of developing MonoGame.Extended 4.0! Stay tuned.
## Patreon Supporters ## Patreon Supporters
The patreon has been removed. If you would like to support the maintainers of this project, please consider using the GitHub sponsors link for one of the maintainers.
Thanks to all those that support the project on Patreon! You're helping to keep the project alive. As a special thanks to those that supported this project through Patreon in the past, their websites were linked in this readme and have been preserved below:
[![image](https://cloud.githubusercontent.com/assets/3201643/17462536/f5608898-5cf3-11e6-8e81-47d6594a8d9c.png)](https://www.patreon.com/craftworkgames)
## Special thanks
As a reward to some of my patrons I've linked thier websites here:
- [PRT Studios](http://prt-studios.com/) - [PRT Studios](http://prt-studios.com/)
- [optimuspi](http://www.optimuspi.com/) - [optimuspi](http://www.optimuspi.com/)
If you're not on the list and you should be please let me know!
Also thanks to:
## Special Thanks
- Matthew-Davey for letting us use the [Mercury Particle Engine](https://github.com/Matthew-Davey/mercury-particle-engine). - Matthew-Davey for letting us use the [Mercury Particle Engine](https://github.com/Matthew-Davey/mercury-particle-engine).
- John McDonald for [2D XNA Primitives](https://bitbucket.org/C3/2d-xna-primitives/wiki/Home) - John McDonald for [2D XNA Primitives](https://bitbucket.org/C3/2d-xna-primitives/wiki/Home)
- [LibGDX](https://libgdx.badlogicgames.com) for a whole lot of inspiration. - [LibGDX](https://libgdx.badlogicgames.com) for a whole lot of inspiration.
-28
View File
@@ -1,28 +0,0 @@
# Roadmap of MonoGame.Extended
## [Katabasis]([Katabasis](https://github.com/craftworkgames/katabasis))
### Highlights
* MonoGame.Extended is the bridge for MonoGame and [Katabasis](https://github.com/craftworkgames/katabasis), a fork of FNA.
* Date: Summer, 2021
* Runtime: .NET 5 Desktop (Windows, macOS, Linux)
### Forking MonoGame
#### Why
For building extensions on top of MonoGame, MonoGame itself can be limiting and frustrating. Some frustration is that some "core" types are at odds with extensions. Take the `Rectangle` type in the `Microsoft.Xna.Framework` namespace as an example. `RectangleF` was introduced to be an equivalent to `Rectangle` but for floats (`float`) instead of 32-bit signed integers (`int`). This raises a couple questions however... Should there be 16-bit integer version? What about signed vs unsigned integers? Assume the answer is yes to having these types in the spirit of creating extensions... Then what would that type be called exactly? It would be much easier if the extensions library owned the `Rectangle` type instead so not only the naming is consistent, but also the fields, properties, and methods are consistent aswell! The example is small, but the idea of this frustration with the core types bleeds to many larger problems. In order to solve the very concrete example mentioned above, to solve the larger problems with creating extensions, and to increase the quality of MonoGame.Extended, *FNA* is forked.
#### XNA
MonoGame/FNA has heritage being XNA. It's my opinion that XNA on it's own has some poor choices in design for *game-dev*. To add insult to injury, XNA is a DirectX 9 API. While older graphics APIs are ubiquitous (e.g. OpenGL), the world is moving on! With newer APIs how modern real-time rendering can technically be solved is very different, challenging, and in some cases more complex. (If you are interested in learning more about the newer modern APIs [check out this blog post comparing them](https://alain.xyz/blog/comparison-of-modern-graphics-apis) by Alain Galvan which is updated frequently.) This difference however opens the door to possible innovations. If MonoGame is ever to reach for these newer graphics APIs, it's my opinion that the very first step is that XNA has to go. What does this mean? It means that `IUpdateable` axed! `Rectangle` gone! `DrawableGameComponent` deleted! `BoundingSphere` poof! It's my opinion that if you *really* needed these types you would, and should, just implement them yourself. Or, get this, copy paste the code from the Extended library!
To make this a possibility for version 4.0, MonoGame.Extended forks FNA. Why FNA? Because MonoGame is evolving, but perhaps not in the direction that makes it easier to write extensions on top of. MonoGame in my opinion is adding a bunch of additions that go beyond XNA and bleed into the domain of extensions. FNA is focused on being a drop in replacement for XNA 4.0 with minimal or carefully considered additions to the APIs. This makes it a good, solid, choice to rip out the gut bad stuff of XNA and leave the good stuff.
### Deliverable
Version 4.0 will be focused on desktop only. Porting games to other devices is challenging. In my opinion, development of a game prototype should start on desktop, the ubiquitous dev-environment. Once you have something going you should *then* think about developing for mobile, console, etc. .NET 5 will be iteresting to see in action however as Microsoft has intended [.NET 5 to be the next .NET Core that will unify desktop, mobile, browser, consoles, and other platforms](https://devblogs.microsoft.com/dotnet/introducing-net-5/).
Of course, then there is the MonoGame.Extended itself. For version 4.0, minimal changes the MonoGame.Extended code will be made. For requested new features, version 4.x will be the window of opportunity.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB