Code Monkey home page Code Monkey logo

gameframework's Introduction

Game Framework for Unity

🚀 Download 📚 Getting Started 📷 Screenshots

Game Framework is a free framework provided with full source code that will help drastically increase the development speed and feature set of Unity games. The aim is to provide the features most games need in a fast, flexible manner with a minimum of coding.

Features include:

  • Quick and easy game setup, including a GameManager to easily manage your game.
  • Simple setup of worlds, levels, characters and other game items including all the menus that you need.
  • Tracking of scores and progress.
  • Unlockable items
  • Custom counters
  • Simple in app purchase.
  • Dialog handling including standard dialog for settings and game over.
  • Advertising support
  • ‘Free prize’ functionality
  • ‘Social’ functionality
  • Gameobject distance/time weighting framework.
  • Localisation.
  • Messaging framework.
  • Debugging and test functions
  • Support for secured prefs
  • Many helper classes and components from Animation through UI
  • Works on Unity Free and Paid.
  • And more...

The source code is open and free to use in your games under a license similar to other assets from the Unity Asset Store. If you make modification or improvements please consider submitting them back for inclusion.

Download

Note: The main branch of this repository should be considered experimental. For ease of use we will now only release stable versions through the Unity asset store although such releases will be tagged here also.

Getting Started

There is a demo included that shows some of the features available. In addition you will find documentation and tutorials on our website:

Screenshots

Your Support

The framework is free, however there is also a paid version which contains additional content to get you up and running including:

- 3 UI themes (Cartoon, Space, RPG)
- The full Beautiful Transitions asset for beautiful screen and UI wipes and transitions
- The full Pro Pooling asset for advanced gameobject pooling
- The full Prefs Editor Secured asset.
- The full PlayMaker Actions for Game Framework asset
- Full 2D runner framework and game sample.
- Advanced parallex scrolling script.
- Additional 3D models and animations including for free prize
- Additional samples
- Tutorials
- Other content
- Priority support and feature requests
- Secures future development of this framework

Feel free to try and use the free version, however if you like the framework then please consider the small price of purchasing the extras bundle to support our efforts in maintaining and developing this framework further.

All reviews on the asset store are also very much appreciated and encourage us to continue developing this framework.

Background

While developing games, we have slowly built up our own internal framework that lets us quickly and easily create and release new games. It is our wish to contribute and make this available to the community to help others. It is freely available so even those with little or no budget can use it. We appreciate however if you are able to download and rate the Asset Store Package to help support the effort needed to maintain this framework.

If you have any questions then please contact Us.

Your Submissions

We appreciate all contributions. If you want to contribute then here are a few guidelines:

  • If you want to add a feature, post an issue about it first. Some features are intentionally left out, others may already be in the works, or I may have some advice on how I think it should be done.
  • If you want to do a bug fix, please post about it too incase others are already working on it.
  • Pull requests should have a single commit. If you have multiple commits, squash them into a single commit before requesting a pull.
  • Try and follow the code styling already in place.

The basic principles of contributing using github are:

  • Fork the codebase
  • Create a branch
  • Commit your changes
  • Push to the branch
  • Open a pull request.

If you have any questions or queries then please contact Us.

License

The source code is open and free to use in your games under a license similar to other assets from the Unity Asset Store. If you make modification or improvements please submit them back for inclusion.

Copyright (c) 2016-2017 Flip Web Apps, Mark Hewitt

The copyright owner grants to the end user a non-exclusive, worldwide, and perpetual license to this Asset to integrate only as incorporated and embedded components of electronic games and interactive media and distribute such electronic game and interactive media. End user may modify Assets. End user may otherwise not reproduce, distribute, sublicense, rent, lease or lend the Assets. It is emphasized that the end user shall not be entitled to distribute or transfer in any way (including, without, limitation by way of sublicense) the Assets in any other way than as integrated components of electronic games and interactive media.

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

gameframework's People

Contributors

aneroin avatar flipwebapps avatar kasradzenika avatar luochuanyuewu avatar randomfeatures avatar

Stargazers

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

Watchers

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

gameframework's Issues

Localisation file priority problem.

I set a simple localisation test, put a localisation file into my Resources folder, i will not be loaded or appended.
after some debugging, i found that the system loaded wrong localisation file located at FlipWebApps\GameFrameworkTutorials\Localisation\Resources\Localisation.csv(not my own one).When i deleted this localisation file, problem is gone.

FacebookManager permission options problem.

The necessary steps to use Facebook sdk are all ok, i also built the fb sdk example secene and run on android perfectly.
then i try fb manager component, my android game will stop running immediately. after many tries,
i found what is the problem.
image
those settings works, my game will not crash.
if i choose permission optional or required, my android game will crash whenever i click the login button.

Unity version:5.4.1f3
GameFramw version: latest github version.
Facebook SDK: 7.8

Gamepad support

Not all of the components work as expected with gamepad or keyboard input. Add such support using the included GameStructure demo as a basis.

Some suggestions of what needs doing:

Part 1 - Title Screen

  • Navigation of buttons.
  • Settings window
  • Press a certain button to continue

Part 2 - Level Selection Screen

  • Navigation of buttons.
  • Select follows highlighted UI element ensuring correct actions (e.g. can't proceed with a locked button)

Part 3 - Character Selection Screen

  • Navigation of buttons.
  • Select follows highlighted ensuring correct actions (e.g. can't proceed with a locked button)

Part 4 - Game

  • Navigation of buttons (or do we need this - should perhaps just trigger pause window on a specific key press)
  • Support within gameover and pause windows.

Thoughts on some of the key changes that might need doing:

  • Setup an initially selected UI element in the scenes Event System and enable navigation for buttons and other prefabs.
  • DialogInstance should have a 'First Selected' field and record / return the last selected item when shown / closed.
  • Change MouseClickOrTapXxx components - ButtonOrTapXxx and add options for specifying button(s?) to react to.

[Disscuss] Dynamic collectibles

Much games have 2 common collectibles, coins and gems

Coins are the most common and easy to find in game, gems are a rare collectible and in much games you need to purchase this collectible to get it (or showing adds)

I have two proposals to solve this issue
1 - Add gems using same procediments as coins actually
2 - Add support for dynamic count of collectibles

Adding dynamic collectibles adds a lot of new features that could be used to improve user experience in our game, my idea about this is:

1 - Initially Game Framework has two collectibles, points and coins

2 - New methods to get/set this collectibles could be:

  • AddCoins(int coins) -> Collect(string collectible, int quantity, int playerNumber = 0), Example:
    AddCoins(10) -> Collect('Coin', 10)
    AddPoints(10) -> Collect('Point', 10)
  • RemoveCoins(int coins) -> Uncollect(string collectible, int quantity, int playerNumber = 0), Example:
    RemoveCoins(10) -> Uncollect('Coin', 10)
    RemovePoints(10) -> Uncollect('Point', 10)

This collectibles could be stored in a dictionary of <string, float> to allow decimal values

What do you think?

help

Sorry for such generic title =)
I'm software engineer student from Ukraine, and in our Object Oriented Programming course we are forced to make a contribution to some open source project. Since I'm also working in small gamedev team and we are using Unity, I'm interested to help you if you have some features that you wanna implement.
I'm writing in C#, know OOP and SOLID principles, already worked with Unity3D.
So I'd like to find a conclusion with you and make my contribution.

you can also contact me via email "[email protected]"

sorry for english, still learning

A way to pause level

I noticed LevelManager.IsLevelRunning is protected on set and GameManage.IsPaused is deprecated

So, where is the current way to pause game through game framework?

Invalid World Unlock Coins Value

Thank you for the amazing Framework ,
There is one small issue that i encounter using the framework which is that my worlds are getting the same coins value as my levels and they are ignoring the set value in game manager inspector

I had to change the following line to get the desired result

File : GameManager.cs
Line : 567
From : Worlds.LoadDefaultItems(1, NumberOfAutoCreatedWorlds, CoinsToUnlockLevels, LoadWorldDatafromResources);

To :
Worlds.LoadDefaultItems(1, NumberOfAutoCreatedWorlds, CoinsToUnlockWorlds, LoadWorldDatafromResources);

Please close this issue if this was intended for some reason , if not a small fix will help lot of other developers using your amazing framework ,

Keep it up ,

Regards

Add New GameItem instance GenericGameItem and associated classes

Add a new generic GameItem implementation with associated classes (e.g. similar to character). This could be used for any general purpose such as in game unlockable items etc..

Other improvements include:

  • Add a generic category int property (can be in Generic baseclass) with options for returning items of a specific category.
  • Expose this through the GameManager in a similar fashion to other GameItem types.

ShowCoins component localisation issue.

I added a ShowCoins component(GameFramework | GameStructure | Player) to a ui element with text component, then set the localisation key. the problem is when i change the game language globally, the text won't change immediately unless reload scene.
I also tried adding localisetext component on the same ui element which led to another odd result.

Allow for IAP only unlocking of premium items

Coin based unlocking can be used for some items but there is a need that others (premium) ones can only be unlocked through IAP?

Proposed solution

Add an 'unlock mode' to the individual GameItems with options such as Default, Custom, Coins, Coins & IAP, IAP Only.

Selection menu buttons need updating to take this status into consideration.

The unlock button should only unlock based upon coins but should probably offer the option to unlock next / random (it might be you don't use this button depending upon the exact setup you go with)

Use ScriptableObjects to allow GameItem Extensions

Currently you can add extra information to a GameItem (Level, World, Character, ... using either a json resources file and / or creating a subclass). One improvement would be to offer the option of loading a ScriptableObject in the same way json files are loaded that would allow for configuration through the editor and also adding additional code.

Proposed Tasks:

  • Create a new GameItemExtension class that inherits from ScriptableObject. This should also have public variables for Name, Description, ValueToUnlock that it set can be used for overriding default values as is done with the json file.
  • Add a GameItemExtension property to GameItem and try setting this in GameItem when loading from resources as is done with the json file (in LoadLevelData()).
  • Add a new GameItem method GetExtension() that trys converting the scriptable object to the specified type and returns it.

Namespaces improvements

I have two recommendations to reduce and improve namespaces

1 - Remove FlipWebApps to bring more singularity to GameFramework
2 - Remove Scripts, C# namespaces are used in other scripts to call GF scripts, It do not make sense to add scripts in all namespaces because there will not be other types of namespaces (for example we never will need GameFramework.Prefabs.UI)

Example of new namespaces:

using FlipWebApps.GameFramework.Scripts.GameStructure.Levels.ObjectModel;
using FlipWebApps.GameFramework.Scripts.UI.Other.Components.AbstractClasses;
using GameFramework.GameStructure.Levels.ObjectModel;
using GameFramework.UI.Other.Components.AbstractClasses;

Unity compilation error

Thank you for the effort that's gone into this I hope to understand it better and use it on my next project, hopefully add or suggest if I can!

Pulled from latest master at 14:00 7 Nov 2016

Unity compilation error :
Assets/Scripts/GameStructure/GameManager.cs(25,19): error CS0234: The type or namespace name 'BeautifulTransitions' does not exist in the namespace 'FlipWebApps'. Are you missing an assembly reference?

Line 25 - using FlipWebApps.BeautifulTransitions.Scripts.Transitions.Components;
Simply commenting out solves the issue!

FYI - compiling in Monodev 5.9.6 on Win10 64bit gives 23 errors but I always use Unity for compilation.

UPDATE
I've just noticed the conditional #if BEAUTIFUL_TRANSITIONS in GameManager.cs
Moving the offending line solves the issue!

#if BEAUTIFUL_TRANSITIONS
using FlipWebApps.BeautifulTransitions.Scripts.Transitions.Components;
using FlipWebApps.BeautifulTransitions.Scripts.Transitions;
#endif

I assume this is the fix!?

Allow GameItems to have multiple features

Allow GameItems to have multiple features such as in a racing game you might use the 'Character' GameItem to represent different cars and should be able to have features such as color, design and wheels or a shooter where the character you can choose the weapon or clothing.

  • Each feature itself would be a GameItem and so have properties such as name, sprite, unlocking etc..
  • Allow for multiple features by adding a tag and category to GameItems. In GameItem enter number of features to create (similar to GameManager) and then allow configuration through existing configuration features.

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.