Adventurer Simulator Web - Alpha 1.0
Github Link to this PR: https://github.com/JaegarSarauer/AdventurerSimulatorWeb/pull/1
Adventurer Simulator Web - An Idle Incremental MMO using WebGL
[ALPHA 1.0]
Hello all, I'm sorry to be so late with an update on Adventurer Simulator. Another project I'm working on was released last week and took a lot of my time. On top of that, I decided to take a development path change and it has slowed the movement on the project for now.
As you may have noticed, I have labelled this post of Adventurer Simulator with "Web", and I'm also using a new GitHub repo. I decided to temporarily halt development on the Android app version so that I can get started on the final project, this one, which must be complete by the end of the year. Adventurer Simulator Android was seeing progress, but was also taking a lot of time on tasks that didn't focus on core gameplay. It was clear the further I was going with the project; UI and device specific code continued to increase in complexity in order to accommodate future features.
I failed to post about the most recent updates to Adventurer Simulator Android as they were smaller changes not quite worthy of posting. You can see the latest updates on the Google Play Store. I hope to push out occasional updates to the Android version, but the focus is on the Web version.
Project Introduction
Since Adventurer Simulator is technically being restarted with this project, I will do a quick reintroduction of the project.
Adventurer Simulator is an MMO Idle and Incremental game that will run in WebGL on modern web browsers in an HTML5 canvas element. The game is based after this document, Kingdom of Eloria. The game core concepts will match those of the current Android version, but will replace all the UI navigation and interactions with a visible map of the world, with an interactable environment and players. More about the core concept can be found here.
The world, characters, objects, items, images and UI will all be rendered with WebGL, under an engine created for this project. The engine will follow an Entity Component System (ECS) for all objects in the game, with singleton managers for specific engine functionality. The "Engine" manager will contain reference to all classes available to the Game, allowing for quick and easy access while abstracting parts of the engine away from being used in the game if needed.
The project right now is one scene that builds a few UI panels that will later be populated with their corresponding information and actions. The MessageBox is loading an image asset and appending the most recent 10 messages to the list from bottom up.
Additional Information
The web project is first being designed to use canvas 2d for drawing until the WebGL system is created. All renderable objects will have their own render method, and will be broken down into their smallest counterparts. This allows for abstracting the render code completely from the expected functionality that the rendered object represents.
The project itself is also nothing fun to play, or look at... There is nothing interactive yet. This initial post is to introduce the base structure of the project, and show how it will achieve a playable status from scratch soon. The Android game code should be implemented soon, all I need is mouse interaction and buttons.
Pull Request - Initial Setup & Game and Engine Structure
This PR is the initial project setup for developing with WebPack and ECMAScript 7, and some core Engine and Game code. By adding npm and webpack support, the project is now equip with: hot updating, a webserver, production builds, and ECMAScript 7.
Engine
- Base UI Rendering using canvas 2d.
- Two elements, Panels and text. Everything is a Panel.
- Elements respect inheritance for sizing and position.
- Background image/color and font color. Using styling similar to react-native.
- Scenes and scene manager
- Scene manager manages scenes on a stack, pausing scenes below and unpausing the top scene on the stack.
Game
- MessageManager
- Allows for adding a message from anywhere in the system, through the use of a singleton. The messages can be normal, warnings, errors, or chat messages.
- Image asset loading.
- Images are imported through <img> tags and then held by reference by the Image asset file.
Also added a readme for setting up and running this project.
Future Updates
Future features will continue to focus on the engine and game base components. These include mouse and keyboard interactions, UI buttons, and an encapsulated game-specific UI manager to make any game UI changes abstracted to this one system.
After the addition of these key features, the content from the Android version will be added and the game will be brought up to the same state the Android version was in.
Final Notes
Contributions with this project is difficult. I'm required to do this project in order to graduate, and the work must be in my ownership. Once the project has surpassed the requirements and it is submitted, contributions by all are welcome.
For the mean time, feedback is greatly appreciated! I understand at this point the project may not have anything to give feedback on, except code structure. There will be balancing and gameplay feedback needed soon!
Thanks for the contribution!
We have decided that contributions to own projects that do not accept contributions from other users will not be considered for reward. I think it looks like a cool project, but until the project isn't just your graduation project it won't be eligible for rewards. I hope you understand where we are coming from.
Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]
Thats unfortunate to hear. I understand where you're coming from, but I can't afford to spend time posting when I'm already working 80 hour weeks to finish this project in 6 months. I would assume the content of what others can receive from posts like these would be worthwhile in itself, especially for a future open source project.
I most likely won't be continuing to upload contributions until it's worthwhile again.