damarindra / dolanan Goto Github PK
View Code? Open in Web Editor NEWIs a MonoGame extension contains basic function for creating game, such as sprite, camera, collision etc.
License: MIT License
Is a MonoGame extension contains basic function for creating game, such as sprite, camera, collision etc.
License: MIT License
User Interface is mostly being used when creating a game. Step by step implementation
Rectangle
Anchor
UICanvas
Text
Image
9 Slice Image
Button
Bar (After 9 Slice done)
Vertical Container
Horizontal Container
Scroll Bar
As further research, List is better when saving not many items. Dolanan system has a separate collections to save Actor, Component, and other stuff.
For example, the World contains Layer, which is just small amount. Each Layer will hold Actors, this depends on how big your Layer, but I think List is a lot better. Also, each Actor has components that are not that many, this absolutely better with List.
cons Need to check if Object already added on the collection (but, who the f add the same Object 2 times?)
This is Todo list that I'm still missing
OnCollisionEnter gives info velocity and remainder, this allow to calculate push velocity
While creating a level, looks are important. So we refine our assets and want to reload at runtime. This is important to implement, we don't want to stop game, refine art, start the game, it needs a lot of time!
Building / Rebuild
(https://community.monogame.net/t/building-and-loading-content-at-runtime/10849, https://community.monogame.net/t/generating-xnb-files-from-fbx-files-using-commandline/10219/8)Reloading
(https://community.monogame.net/t/reloading-resources-at-runtime/9277)Auto add new file at Content Folder
platformer
topdown
AnimationSquence is a single animation, not a controller! Currently can't be edited at runtime, setup only at constructor.
Example of animation : Idle, Walk, Jump, etc
Track : Contains all keyframe, Object that current recorded
Key : Contains TimeInMilisec and the Value
Animation data contains current position of the animation being played and animation length. If we allow this to be edited in runtime, it will mess up all the UpdateAnimation currently running.
Such as Seek function, seek will jump the position of animation currently playing, so we need update All Track inside the animation, such as _nextKeyIndex
TryGetNewKey is a function that trying to get the next key. We need to passing the positionBeforeUpdate and the currentPosition, this value will be used for trapping the nextKey. Trapping => Is the nextKey.TimeInMilisec between the positionBeforeUpdate and currentPosition
This make it easier to post progress on social media. How to do it?
Overal System, Intialize, Start, Update, LateUpdate, Draw, BackDraw
EC, WITHOUT S. Only EC
Collision
GameMgr
GameSettings
Input
ResourceBox (might be delete (?))
Actor
Camera
World
Layer
UILayer
UIActor
Component
Transform2D
Renderer
Sprite
UIComponent
AABB
Body
Response (move)
Hit
World Collision (not a component, the whole game but collision handle)
Image
comming soon
AnimationPlayer
AnimationSequence (resource type)
Track
Aseprite
Container for AnimationSequence, provide action to Play(string animationName)
GetCurrentAnimationSequence
GetCurrentAnimationName
IsPlaying
Play(string name)
PlayAt(string name, float position)
Stop
SetSpeed
(speed for all animation inside the player)Convert a position to different space
Screen To World Position
Viewport To World Position
World Position to Screen
World Position to Viewport
Using a library is okay, but sometimes the API is not enough. We are human right?
Like in Unreal, 'command' is the feature killer in Unreal. We can add custom command to do an action
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.