Code Monkey home page Code Monkey logo

newbark-unity's Introduction

NewBark

🌳 Retro-style 2D RPG game engine for Unity, inspired by Pokémon Gold, Silver and Crystal.

screenshot

IMPORTANT: This project is in low-maintainance mode, meaning that compatibility fixes with new Unity and package versions will be published but new additions or features are not going to happen any time soon and there are no plans for them yet.

Looking for a GameMaker version? Check newbark-gamemaker

Requirements

  • Unity 2021.1 or greater

License

This software is copyrighted and licensed under the MIT license.

Disclaimer

This software comes bundled with data and graphics extracted from the Pokémon series of video games. Some terminology from the Pokémon franchise is also necessarily used within the software itself. This is all the intellectual property of Nintendo, Creatures, inc., and GAME FREAK, inc. and is protected by various copyrights and trademarks.

The goal of this project is not to create and/or distribute a game, but to learn how to create similar retro games in Unity. So this project, apart from being a possible base engine for future similar projects unrelated to the Pokémon franchise, has mainly educational purposes.

The author believes that the use of this intellectual property for a fan reference is covered by fair use and that the software is significantly impaired without said property included. Any use of this copyrighted property is at your own legal risk.

This software is not affiliated in any way with Nintendo, Pokémon or any other game company.

A complete revision history of this software is available from https://github.com/itsjavi/newbark-unity


Created by @itsjavi

newbark-unity's People

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

newbark-unity's Issues

[warp] finish warp implementation

  • fix current issues (player stuck walking after warping if move key still pressed)
  • implement door enter/leave animation (flash + color invert and/or fade)

ui: add a way to mute sound

Add a button to mute the sound and/or change the volume. It is a bit annoying to have it always playing by default on page load.

[refactoring] use new Unity Input System

It requires a lot of refactoring and it has some tricky parts that need to be addressed manually (like detecting direction button is being pressed and hold), but it's worth to integrate as it is more future-proof and flexible than traditional input.

Quick Start Guide:
https://github.com/Unity-Technologies/InputSystem/blob/develop/Packages/com.unity.inputsystem/Documentation~/QuickStartGuide.md#getting-input-indirectly-through-an-input-action

Video Tutorial (outdated):
https://www.youtube.com/watch?v=Pzd8NhcRzVo

Documentation on Tiling Map

Great work on this game, just has a quick question!

Is there anyway we can get more documentation on setting up a map/level? Tiled Map Editor is great but it seems the files only export as .tmx files and are missing the .txs files. Did you hard code the .txs file or was there a different way to generate both the .txs and .tmx files for the map?

Thanks,
Steve

bug: player does not move like original

The player is not moving like the in the original Gold and Silver games where:

  • - Speed is faster (~ 3 tiles per second). FIXED.
  • - Changing the direction is faster. In NewBark you have to wait until the previous move ended.
  • - Quick button press makes the player to turn around in the same tile.
  • - Long button press makes

the player to actually move to another tile (or collide).

bug: FPS cannot be different than 32, moves become imprecise

Right now, for making the grid-tile-snapping movement work with tiles of 32 pixels (to always end up inside a full tile) the FPS needs to be also 32.

Something different than that will cause the player to move and overlap outside the tile it is supposed to fill.

To fix this we may need to play more with fps, pixels per frame, tile size and velocity and find a formula. Ideally the game should run at 60fps with grid-snapping.

refactor: Grid Tile Snapping engine

All about the grid-tile-snapping engine calculations (e.g. move, pixelBuffer, processPixelsToMove, etc.) that are now part of Controllable should be inside the Movement class.

The Movement class and its methods and properties should then stop being a singleton, and have a proper constructor accepting some params like fps. Do not rely on the config file, everything external the class needs should be in the constructor or via getters/setters.

The other entities like the Player should delegate on it to know if and how to update the object (velocity to apply, for example).

This would be a step towards abstracting melonjs and making the NewBark "tile snapping" engine more modular and usable by other projects.

bug: on debug mode the player disappears sometimes

On debug mode, the Player entity renderable becomes a me.Container with 2 child sprites: the original renderable and a new one which is the frame around the player sprite.

The problem is that when the player moves outside the initial visible viewport, the sprites disappear.
They appear again once the player is back to the initial visible viewport area + player width.

feature: initial warping engine for changing the map

Initial warping engine for loading another level (map).

  • Create 2 new maps for the player's house (1st and 2nd floor)
  • Create a warp class / melon helper to load the map specified in the warp object metadata whenever the user collides against it.
  • Create a warp transition like in the original GB games (fadeout / fadein afair.)
  • Configure the 4 doors of the new maps (entrance outside/inside, 1st floor outside/inside)

[movement] implement MoveTo/MoveTowards

implement MoveTo(x,y,speed) and MoveTowards (may need path finder logic) for grid-based movement

useful for NPCs to move in front of the player

this could be part of the move director #21

Create a custom collision engine in Unity.

The default one is bumpy/buggy and not pixel perfect. Sometimes the player gets stuck inside collision objects (e.g. doors, corners, ...) or jumps outside making an ugly effect.

[audio] refactor audio management, add channels/layers

Instead of attaching an AudioSource to each collidable element, have a variable to select an SFX sound from a list/enum.

The SFX Audio source should be handled by the main Audio Manager.
The Audio manager will have many sources that will act like audio channels.

[movement] implement movement director

Idea:

implement MovementDirector.Start([array of : x,y,speed,delay], times = 0), Started, Stop, Pause, Resume

Start: Defines a list of positions to move to/from and the delay between them. Times = times to repeat, 0 = infinite.

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.