Bwo-master - An infinity procedural online game using Flutter and flames with NodeJS and Firebase for the back-end

Related tags

Templates bwo-master
Overview

Borderless World Online (BWO)

style: effective dartPowered by Flame

An infinity procedural online game using Flutter and flames with NodeJS and Firebase for the back-end.

showcase5 showcase1

On the Table

The world isn't stored in anywhere, it uses some conecpts and rules (Perlin Noise and Simplex Noise) to generate it equaly in all devices only the changes made by player are actually stored on the server side.

The players will be able to build theirs houses anywhere on the infinity world. That's why i call it borderless world in first place. :)

This project is still in development and it doesnt have many features yet. I'm using the solid principles as much as i can, make things clear enough easy to read although i'm not an expert on it, if you have any suggestion, please let me know it.

Release Date?

Hopefully at some point later this year.

Current Version: 1.0.4

Game Diagram, Structure and Comments

BWO For more detail access Whimsical Diagram Page to see the comments in each node.

Instructions:

  1. Requirements

    • The NPM and NodeJS installed on your system
    • Navigate to the folder bwo-server and run on the console the command npm install to install and update all the dependences
  2. Launch your own server :

    • 2.1 Setup the database if you want to run it Online:

      • Create a project and setup your Firebase database and Cloud Firestore on Google console
        • Save the google-services.json file in android\app\
      • Edit the enviroment variables in resources/config.js or set them in your system so the server can connects to your database.
    • 2.2. Run the Node Server:

      • Navigate to the folder bwo-server and run on the console the command npm start or node server.js
        • To specify an environment use --env=development or --env=production in both case you need to be authenticated in firebase. For localhost use --env=localhost
        • To Run test on the Server side run npm test (still in development)
    • 2.3 For the client-side (Android App), Adjust the Server URL in lib\server\utils\server_utils.dart

      • Set your database name development, production, localhost
      • Tip: You can host in gitpod or heroku to launch it alive for free
  3. If you do not want to configure your own server and just want to run the game: (Localhost)

    • Make sure to adjust the server variable URL in lib\server\utils\server_utils.dart to https://borderless-world.herokuapp.com
    • Make sure to adjust the isOffline variable in lib\server\utils\server_utils.dart to true
  4. Launch the app on your device

    • Left tap on screen = walk
    • Right tap on screen = cut tree/attack
    • While in build mode you can't walk and can only place/delete object inside the foundation square

You can also open the host url on your browser to see the currently server state (for debuging)

And please, let me know if you have any problems, open an issue and i will be in touch very soon. Code refactoring are really appreciated at this point.

Dev Log

Usecases:

  • Optimze render and map Generator
  • Fix player animation Position
  • Add shadow to the environment
  • Stop player walk when device is totally lying down
  • [-] Especial Effects
    • walk smoke
    • water ripple
    • water foam
    • water stars blink
    • sound effects bgm, walk and swim
    • Add More Life to the environment
    • Move camera around player when he is afk
  • Add Cut Tree Animation do player
  • Add fruits fell when hiting trees
  • Tree Cut Logic and Animation
  • Add pickup items
  • Inventory
  • Enemys Category
    • AI patrol (local)
    • AI Search, follow and lose target (local)
    • AI Attacking (local)
    • Generate Random Enemys when walking (online)
  • Add player Attack animation
  • Add combat System
  • Add UI System
  • Added Scene Manager (Switch between Scenes like Menus, Game etc)
  • Add UI - player creation
  • Added New Character Sprites to the game
  • Level and Progression System
  • Player HUD
  • Equipments and status bonuses
  • Add hungriness
  • Add Input Joystick Style for walking
  • [-] Create Node Server
    • Synchronize Players position
    • Smooth player animation
    • Optimze Synchronization player's data only to players in view range
    • Sync hit tree animation / state / respawn
    • Sync enemies
    • Sync attack other Players damage/animation
    • Sync Equipment Sprite
    • Sync items spawn
  • [-] Craft Category
    • Craft Axe item from others items
    • Craft Database
    • Craft UI with drag and drop
  • [-] Build Category
    • Foundation for private building
    • Wall placements
    • Auto/Toggle wall tall level
    • Delete Foundations
    • UI object selection interface
    • Ground Tiles
    • Roofs
    • Animated Doors
    • Windows
    • Craft or buying system
    • Sync building to the server
      • Walls
      • floors
      • furnitures
    • Save/backup Foundation/House from server to firebase
  • [-] Interfaces
    • Create Account UI
    • Character Creation UI
    • Login UI
    • Equipments UI
  • Change background music Volume dynamic
  • Firebase to backup server state
  • Handle users login on database
  • Biomes
  • Dynamic bundle and CI/CD for playstore
  • Global Chat System
  • UML Game Diagram
  • Safe zone to foundations
  • Random Maze dungeon and loots

Know Problems

  • Sometimes slipping a too much when receiving walks updates
  • Enemys won't collide with walls. Missing Path Finding

Doing now

  • Performance improviments

Next

  • Code refactoring
  • New Enemy
  • Enemy Passive Aggressive

22/09

  • New Enemy

forward_right

18/09

  • Fixed bug when dragging foundation area preview outsite of the screen area
  • Fixed but when creating character after flames update
  • Reducing foundation load area from server, it will load only if you are close enough to the edge screen
  • Added option to build foundation over cutted tree spot

17/09

  • Server Send Messages big improviments
  • Foundations are now safe zone, this means enemys wont attack you there

13/09

  • Added Doors
  • Auto open/close doors when player is close
  • Added remove furniture functionality to Delete Tool
  • Furniture Colisions checks and validation for placements

doors

09/09

  • Added Roofs

roofs

08/09

  • Furniture Synchronization
  • Added upstairs Wall level layer to respective button (Used to show Roofs in near future)

07/09

  • Added Wall Mutitexture

wall_multexture1

06/09

  • Fixed floors not beeing placed when terrain had not finished to build
  • Added Furniture Select and Placement
  • Added floor and furnitures sprites

04/09

  • Added Toast notification message
  • Added Tree HP regeneration and delete from server after hp is full
  • Fixed Foundations not loading issue
  • Backup Foundation to firebase

03/09

  • Fixed some performances issues when updating walls

01/09

  • Added Floor to build system

30/08

  • Added Wall windows selector
  • Added Foundation Windows selector, placement area indicator drag, Color indicator when it is safe or not to move
  • Server validations for Foundations
  • UI Build System

28/08

  • Added Wall Placement synchronization over the server. Finally!:O (Not saving data yet)
  • Added server send menssages improviments when walking
  • Added new sprites
  • Started Build windows action (not finished)

26/08

  • Added Google sign in method Authentication
  • Saving User character data and user account to firebase
  • Added Merge function between firebase and server data
  • Enemies are no longer saved permanently as since they are spawned as you walk, also a good idea for cleanin up the server on each restart

25/08

  • Added firebase database to save persistence data

24/08

  • Added 02 new sprite characters
  • Added Toggle wall tall level (Auto, low and tall)

23/08

  • Added Foundation for private House Build System
  • Added Wall Placement on terrain

21/08

  • Added Leveled Up System from Server
  • Synchronized: hit tree action
  • Synchronized: Tree health / Tree Dying animation / respawn after 180s

19/08

  • Fixing bad UI elements position on some devices.
  • Added logs record on server
  • Added Player HP Regeneration from server
  • Added XP reward for killing monster from server
  • Fixed order male1 left/right walk sprite animation
  • Changed Keyboard open animation and auto capitalize

17/07

  • Added heroku server for tests.

16/08

  • Fixed enemy walk when it goes offscreen
  • Improviment on enemy's reaction when a player is on its range and attack delay
  • Synchronized Players Attack to Enemys

13/08

  • Added Effective Dart to the project (Massive refactoring)

11/08

  • Added Jasmine for (TDD) on the back-end Server
  • Make the Enemy loses its target when he dies

07/08

  • New enviroment Production/Development updates when starting server
  • Fixed Spawn Players position after previous update
  • Fixed not loading grass textures
  • Adedd Wakelock (Screen will keep Aweake)
  • Fixed Rare bug when enemys spawn with NaN Values

03/08

  • Rebuilng Logic to Synchronize enemy walk with speed simulation from Server-Side (This is need to calculate when enemy is REALLY close to player, instead of "teleporting" to from backend while in front they are not close)

01/08

  • Added Server-Side Folder to the project

30/07

  • Reducing Log amount for Socket.io Lib
  • Enemys Name
  • Some Improviments on Connections to Server when receving messages update

26/07

  • Realtime Enemy Spawn/Walk Synchronization (Client side)

24/07

  • Added Input Joystick Style for walking (Accelerometer is still very interesting and different but it is just too hard for some people)
  • Fixed Enemys not spawning when off screen
  • Damage Text Colors for Enemys/Player
  • Enemys not patroling

21/07

  • Added Level and progression System
  • Added Equipments items and bonus status (Single Source shared to all characters)
  • Added Players HUD and status management logic
  • Added Axe to cut tree faster
  • Added calories logic (If you are starving you get badness status and limitations)

17/07

  • New Players sprites
  • Fixed Tree Generation (Sometimes it was random)
  • Minior map improviments
  • Fixed some Server Side Logic
  • Added offline mode for debug

15/07

  • Added 3 New Playable Sprites to play with
  • Added Start Location Selection
  • Character Creation UI
  • Added new UI Buttons and Keyboards

10/07

  • Solved problem not updating players when entering on my screen
  • Removed Google Firebase, using Node.js Server instead
  • Sync players position to camera view only

07/07

  • Added Realtime connection to Google Firebase.

04/07

  • Added Combat System (Damage/Death/Respawn)
  • Added AI Attack
  • Added Damage Text Display on UI

03/07

  • Added AI System
  • Added new Enemy [Skull]

02/07

  • Tree Cut Logic/Animation and Respawn
  • Added Log Item
  • Added Pickup Items
  • Added Inventory System
  • Added Click Detection
  • Added HUD and UI System

29/06

  • Gravity, friction and bouncy Physics
  • Added Drop item logic

28/06

  • Player movment changed - now you need to be taping on screen to move him.
  • Player Sprite changed
  • Hit tree player animation

26/06

  • Added Random Grass/flowers sprites,
  • Changing colors Pallet to get more 'look and feel' of the game.
  • Added Collision in the mountain
  • Ambient Music and footstep walk

24/06

  • Added walk/Swim and water effects + animations

23/06

  • Added player sink into the water and Trees collision detection.

21/06

  • Right now i'm focusing on the performance improviments in order to bring it the best fps as i can.
  • Next steps will be the player design it self and collision detection with the enviroment.
You might also like...

The Integration Test Helper has pre-configured methods that allow for faster test deployment for end to end (e2e) test coverage.

The Integration Test Helper has pre-configured methods that allow for faster test deployment for end to end (e2e) test coverage.

The Integration Test Helper has pre-configured methods that allow for faster test deployment for end to end (e2e) test coverage (using Android and iOS

Apr 7, 2022

Build an End-to-End Typesafe APIs (Experimental)

mid ⚠️ warning: the project is still experimental! so things may change often until a stable version is released. mid is a tool to build an end-to-end

Oct 19, 2022

Academic master is E-learning app where students can share their doubts wiith their peers they can chat and also they can find their notes

Academic master is E-learning app where students can share their doubts wiith their peers they can chat and also they can find their notes

Academic Master is E-learning App. Features:- 1) You can post real Post query in Images and video formates. 2) We will Provide notes,books and previou

Dec 14, 2022

Android test task master - Create PIN code screen, authentication by PIN code screen and menu screen

Android test task master - Create PIN code screen, authentication by PIN code screen and menu screen

Here is described test tasks for a android dev. Need to implement three screens:

Oct 4, 2022

Slider Master Animation Flutter Dart

Slider Master Animation Flutter Dart

Flutter-animated-Slider 🔥 🔥 untitled.1.mp4 Firt you need to add this in pub yamel : dependencies: carousel_slider: ^4.0.0 Finally import 'package

Sep 10, 2022

Dialog flowtter-master - A Flutter implementation of DialogFlow, improved

Dialog flowtter-master - A Flutter implementation of DialogFlow, improved

A Flutter implementation of DialogFlow, improved. Build your integrations with D

Jan 3, 2022

From then on, developers only need to master one Button component, which is enough.

From then on, developers only need to master one Button component, which is enough.

FButton From then on, developers only need to master one Button component, which is enough. Support corners, borders, icons, special effects, loading

Nov 22, 2022

Master Channel cannot use Glass Floating Action Button

Master Channel cannot use Glass Floating Action Button

Problem Master Channel cannot use GlassFloatingActionButton. About This package

Oct 2, 2022

In this video we will learn how to Integrate NodeJS Login and Register API in our Flutter application using JWT Token Authentication.

In this video we will learn how to Integrate NodeJS Login and Register API in our Flutter application using JWT Token Authentication.

Flutter Login & Register with Node JS Rest API In this video we will learn how to Integrate NodeJS Login and Register API in our Flutter application u

Nov 28, 2022
Comments
  • Any update for this project ?

    Any update for this project ?

    I try to fork BWO and run on local, but the code seems not match to any flame version, need some help! Really love BWO and I am trying to build my own.

    thanks

    opened by minchemo 0
Owner
null
Firebase Realtime Database as Back-end - Used in 'cart' and 'favourites' pages

food_delivery_app Firebase Realtime Database as Back-end - Used in 'cart' and 'f

Dogan 11 Oct 24, 2022
Cupertino back gesture - Flutter package to set custom width of iOS back swipe gesture area

cupertino_back_gesture A Flutter package to set custom width of iOS back swipe gesture area. Usage To use this package, add cupertino_back_gesture as

null 28 Dec 7, 2022
Bhargav Reddy 10 Nov 12, 2022
Flutter user authentication with back-end handler

user_auth Dart - Backend user auth helpe, with common methods Show some ❤️ and star the repo usage import package:user_auth/user_auth.dart. create ins

Mohamed Sayed 9 Jan 2, 2022
This is an applications for fetching pokemon data from API and showed in Listview with infinity scrolling

pokedex This is an applications for fetching pokemon data from API and showed in Listview with infinity scrolling #Author Created by Yusril Rapsanjani

Yusril Rapsanjani 9 Dec 13, 2019
Multiplayer tictactoe game made in Flutter with nodejs and socket.io and using riverpod for state management

TicTacToe Game A Multiplayer TicTacToe Game- Works on Android, iOS and Web. Features Create/Join Room Play Realtime Display Points Round & Game Winner

Utsav Ghimire 5 Oct 18, 2022
Appwrite is a secure end-to-end backend server for Web, Mobile, and Flutter developers that is packaged as a set of Docker containers for easy deployment 🚀

A complete backend solution for your [Flutter / Vue / Angular / React / iOS / Android / *ANY OTHER*] app Appwrite 0.12 has been released! Learn what's

Appwrite 28.2k Jan 3, 2023
:end: A dart package to append either `&` or `and` at the end of a List.

And Game A dart package to append either & or and at the end of a List. Features Appends & or and at the end of the list. Available as method or exten

Tirth 2 Sep 24, 2021
End to end flutter series for zero to hero flutter devloper.( lang of videos is turkish)

flutter_full_learn A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you start

Veli Bacik 191 Dec 24, 2022
End-to-end mobile app templates that other developers can use during their Flutter development journey.

Flutter UI Templates Welcome Contributors ?? The Robotics Forum always encourages new ideas. Aim ?? Main aim of this repository is to make things fast

The Robotics Forum, VIT Pune 8 Dec 18, 2022