Releases: Gregorooooo02/RTS_Engine
v1.1
Changelog for v.1.0.1 (20.06.2024)
[Changed] UnitAttack agent state class:
-[Changed] Dealing damage is now synchronized with animations
[Changed] Camera component class:
-[Added] Boundaries for camera movement so it won't fly outside of the map
[Changed] WorldRenderer component class:
-[Added] ObstructTerrain method that, given location and radius, dissables pathfinding nodes in relevant area
[Changed] SceneManager class:
-[Changed] Mission generation
-[Fixed] Fog now resets when exiting the mission
-[Added] Mission scene is now deleted after exiting it
[Added] AwarenessBar component class:
-[Implemented] All component methods
-[Added] Logic for displaying enemies' alerness in form of the bar above their heads
Changelog for v.1.0.2 (21.06.2024)
[Added] AlertnessMark component class:
-[Implemented] All component methods
-[Added] Logic for displaying a 2D sprite above enemies head when they are alerted
[Changed] UnitIdle agent state class:
-[Added] Units now transform back to furniture when they are standing still long enough
[Changed] Agent component class:
-[Added] Units transformed into furniture are now invisible to enemies
-[Added] Updating the units' portraits when unit dies
[Changed] AgentsManager class:
-[Added] Proper scaling of units' portraits with screen size
[Changed] Button component class:
-[Added] Functionality of selecting units by clicking units' portaits with LMB
-[Added] Functionality of moving camera to a unit by clicking unit portait with MMB
[Changed] Camera component class:
-[Added] MoveCameraToPosition method
[Changed] AgentData abstract class:
-[Added] Support for unit stats bonuses
[Changed] GameManager static class:
-[Added] Multiplier values for units' stat bonuses
[Changed] BuiltBuilding component class:
-[Added] Units' upgrades logic
Changelog for v.1.0.3 (22.06.2024)
[Changed] SceneManager class:
-[Added] Resetting player progress
[Fixed] CivilianFlee agent state class:
-[Fixed] Civilian repathing problems
[Fixed] AlertnessMark component class:
-[Fixed] Alerness mark not disapeating after death
[Added] HiddenIndicator component class:
-[Implemented] All component methods
-[Added] Logic for displaying sprite above player unit head when it's transformed into the furniture
[Changed] SoldierAttack agent state class:
-[Added] Soldiers now try to find other target if their current target died or disapeared
[Changed] Agent component class:
-[Changed] Unit' portait is now disabled after unit's death
[Changed] Button component class:
-[Added] Logic for selecting units for mission
[Changed] GameManager class:
-[Added] UnitsSelectedForMission mask field for handling unit selection for mission
[Changed] Globals class:
-[Added] Support for easy Picking enabling and disabling
[Fixed] PickingManager class:
-[Fixed] Disabled picking if in this frame UI has been hit. It's to prevent e.g hitting exit button and picking building in the same frame in the camp because the button was in front of the building
[Changed] GameObject class:
-[Added] Option to disable cascading active state
[Added] Assets
-[Added] Chandalier animated model
-[Changed] Sawmill textures
[Changed] WorldRenderer component class:
-[Added] Basic village spawning in mission
Changelog for v.1.0.4 (23.06.2024)
[Added] Assets
-[Added] BabyCupboard animated model
-[Added] Cupboard animated model
-[Added] Cupboard projectile model
[Changed] WorldRenderer component class:
-[Changed] Villages now spawn in the centroids of voronoi zones
-[Changed] Villages now can't spawn next to eachother, in water and in the mountains
-[Changed] One village variant can no longer spawn multiple times in one missison
-[Changed] Villages now keep their relative Y height to the ground
-[Added] Spawning Units selected by player for the mission
[Changed] SoldierPatrol agent state class:
-[Changed] Pathfinding is now performed in parallel
[Changed] Agent component class:
-[Added] Meat reward for killing enemies
[Changed] Button component class:
-[Added] Requirement for the player to pick 2 units for the mission
-[Fixed] Problem with picking blocking for exit button
-[Fixed] Exit button is now blocked by other UI windows
[Added] Assets
-[Added] Sawmill animated model
-[Added] New grass texture
-[Added] Knight animated model
-[Added] Archer animated model
-[Added] HealthBuilidng animated model
Changelog for v.1.0.5 (24.06.2024)
[Changed] WorldRenderer component class:
-[Added] Tutorial generation
-[Added] Rock generation in mission
-[Changed] Player units now have multiple attempts at spawning
-[Fixed] If generated terrain doesn't allow for any village to spawn game will try to generate mission from the begining
-[Added] Random civilian spawning in the mission
-[Added] Obstructing pathfinding by props in villages
[Changed] Button component class:
-[Changed] When pressing Play button in Menu for the first time Tutorial Mission will load instead of Camp Scene
[Changed] SceneManager class:
-[Added] Tutorial generation
[Changed] GameManager class:
-[Added] Mission reward fields so if player loses the reward can be removed
[Fixed] Agent component class:
-[Fixed] Selected units' outlines not disapearing after their deaths
[Changed] Assets
-[Added] Some UI sprites
-[Fixed] Pivot points of many models
[Added] WinLoseWindow component class:
-[Implemented] All component methods
-[Added] Logic for handling activating Lose and Win screens when win/lose conditions are met
Changelog for v.1.0.6 (25.06.2024)
[Changed] Assets
-[Added] dmgBuilding model
-[Added] healthBuilding model
-[Added] Wardrobe animated model
-[Added] Chandalier animated model
-[Added] Fireball model
-[Added] Arrow model
-[Removed] No longer necessary assets
[Fixed] WorldRenderer component class:
-[Fixed] Trees abnd player units will now longer be placed in the same spot
-[Fixed] Villages and player units are now prevented from spawning on the edge of the map
[Fixed] FogManager class:
-[Fixed] Fog of War artifacts on Nvidia systems
[Changed] Emmiter component class:
-[Added] Distance scaling control
[Changed] Healthbar component class:
-[Added] Heart icon on the left of the healthbar
[Changed] AwarenessBar component class:
-[Added] Eye icon on the left of the bar
[Changed] UnitAttack agent state class:
-[Changed] Dealing damage timing is no longer based on animation and is back to being based on timer instead
[Changed] CivilianFlee agent state class:
-[Changed] Civilians now disapear if they successfuly escape, increasing Attention Bar value in the process
[Changed] Agent component class:
-[Added] Enemies increase Attention Bar value a little when they die
[Added] Village component class:
-[Implemented] All component methods
-[Added] Logic for decreasing Attention Bar value if all buildings in village get destroyed
Changelog for v.1.0.7 (26.06.2024)
[Fixed] UnitAttack agent state class:
-[Fixed] Units having problems pathfinding to builidng while attacking them
[Changed] Assets
-[Changed] dmgPuzzle sprite
-[Changed] healthPuzzle sprite
-[Changed] sawmillPuzzle sprite
-[Added] Sawmill render sprite
-[Added] dmgBuilding render sprite
-[Added] healthBuilding render sprite
-[Added] Tutorial sprites
-[Added] Sound Effects for humans
[Changed] Button component class:
-[Added] Logic for tutorial handling
[Changed] SpiteRenderer component class:
-[Added] Logic for tutorial handling
[Changed] WorldRenderer component class:
-[Changed] Tutorial generation
-[Changed] Amount of civilians in mission from 5 - 10 to 15 - 30
[Changed] Agent component class:
-[Added] All animations synchronization for humans
-[Added] All sound effects synchronization for agents
-[Removed] 'Took damage' sounds synchronization for player units
[Changed] Emmiter component class:
-[Added] Sound effects for humans
-[Removed] 'Took damage' sounds from player units
-[Changed] Distance scale from 10 to 5
[Added] MusicTrigger component class:
-[Implemented] All component methods
-[Added] Logic for playing background music
-[Changed] Decreased base scene theme volume
[Changed] Globals class:
-[Added] Master volume controls
-[Added] Gamma controls
[Changed] PickingManager class:
-[Changed] Decreased the size of bounding spheres for units
[Fixed] BuiltBuilding component class:
-[Fixed] Game crashing when opening sawmill's upgrade window
v1.0
First release of our RTS Engine! ;DD
Changelog for v.0.5.0.1 (17.05.2024)
-[Removed] NoiseTexture drawing in MapScene class.
-[Changed] Invalid field name being used in SceneManager's OnLoad method.
Changelog for v.0.5.0.2 (17.05.2024)
-[Changed] MainPath for non Windows systems to those of Windows.
-[Removed] The different initialization of AvailibleScenes based on system.
-[Fixed] InstanceRenderer's list in Renderer not being initialized correctly.
Changelog for v.0.5.1 (17.05.2024)
[Changed] ModelData class:
-[Changed] Level of detail thresholds now scale with maximum and minimum camera zoom values.
-[Added] Support for custom LOD thresholds.
[Changed] Camera component class:
-[Changed] Corrected camera serialization and deserialization.
-[Added] Proper Inspect method implementation to allow manipulating camera parameters in DEBUG window.
-[Changed] Camera parameters names now follow .NET pattern.
[Changed] Renderer class:
-[Changed] Adjusted shadows to better cover visible area.
Changelog for v.0.5.2 (19.05.2024)
[Changed] Globals class:
-[Added] Basic Paused flag.
[Changed] Layer component class:
-[Added] Proper Inspect method implementation.
-[Changed] Layer type field storing method.
-[Added] Layer component deserialization
Changelog for v.0.5.3 (19.05.2024)
[Added] Puzzle component:
-[Implemented] All component methods
-[Added] Basic puzzle drag and drop mechanic
-[Added] Drawing puzzle pieces and background
-[Added] Puzzle piece snapping logic
-[Added] Win condition detection
[Added] Puzzle piece class:
-[Added] Logic for handling individual puzzle pieces
[Changed] Renderer class:
-[Added] Added puzzle rendering
[Changed] All 2D rendering components:
-[Added] Option to use global position instead of local position for drawing coordinates.
Changelog for v.0.5.4 (20.05.2024)
[Added] FogReveler component class:
-[Implemented] All component methods
-[Added] Fog of war reveler logic in update method.
[Added] FogManager class:
-[Added] UpdateFog method that update fog masks if at least one of the active FogRevelers moved.
-[Added] MakeHole method that create a pixel circle in designeted loaction on the texture.
-[Added] Fog resolution option
[Changed] Game1 class:
-[Added] FogManager initialization;
-[Added] FogManager update.
[Changed] Globals class:
-[Added] FogManager static field.
[Changed] Shaders
-[Added] Fog of War support.
-[Added] Fog of war scale parameter.
Changelog for v.0.5.5 (20.05.2024)
[Changed] MapScene Class:
-[Added] New WorldObject to generate a chunked terrain
-[Deleted] Rendered heightmap sprite
[Changed] SceneManager Class:
-[Changed] If the WorldRenderer isn't null then we add a WorldRenderer to the List of WorldRenderers
[Changed] Renderer Class:
-[Changed] DrawWorld() method now draws all the elements in the WorldRenderers List
-[Changed] Now WorldRenderers list clears itself when the scene changers
[Changed] PerlinNoiseGenerator Class:
-[Changed] Implementation of the GenerateWhiteNoise()
-[Added] CalculateFalloff() method for falloff around the heightmap to create water
-[Added] Falloff for the GeneratePerlinNoise() method
[Changed] Helpers Class:
-[Added] Quick Clamp01() method
[Changed] GenerateMap Class:
-[Added] ExtractSubTextures() method to create subtextures of the main heightmap
[Changed] Terrain_Shader.fx shader:
-[Changed] Structure of the shader
-[Added] Multitexturing technique
-[Revert] Colored and ColoredNoShading; Textured and TexturedNoShading techniques for debug
[Changed] WorldRenderer Component:
-[Deleted] Old structure
-[Added] Chunk generation and drawing
-[Added] Multitexturing the terrain
[Changed] AssetManager Class:
-[Added] DefaultHeightMaps List for the debug and earlier implementation of chunk generation
Changelog for v.0.5.6 (21.05.2024)
[Changed] FogReveler component class:
-[Added] Track public field. It's a small Texture2D object that stores the texture with pixel circle used to render fog.
-[Changed] Reveal radius field from float to int.
[Changed] FogManager class:
-[Changed] UpdateFog method. Now instead of directly modifying the mask textures it renders the reveal area using Tracks stored in FogRevelers and RenderTarget2Ds. It had to be done this way because direcly modifing textures is way too slow.
-[Added] GetCircleTexure public method that, given radius, generates a small texture with pixelized circle of set radius.
-[Added] IsVisible method that checks if given point in space falls within one of the FogRevelers range.
Changelog for v.0.5.7 (22.05.2024)
[Added] WaterBody Class:
-[Added] Properties for the object to customize it how we want
-[Added] Constructor which sets up the water plane and saves it into the buffers
-[Added] Update() which updates the normal map offset to make an illusion of moving water
-[Added] Draw() method which uses TerrainEffect
-[Added] Up-down movement to simulate waves
[Added] Water texture
[Added] Waves normal map
[Changed] Terrain_Shader.fx:
-[Added] Vertex and Pixel functions responsible for the moving normal map
[Changed] WorldRenderer Component:
-[Added] In Draw() the water bodies are drawn with respective chunks
-[Changed] Update() is now updating the movement of the normal map
Changelog for v.0.5.8 (22.05.2024)
[Changed] All UI related classes:
-[Added] Proper resizing when changing screen size.
[Changed] Globals class:
-[Added] Logic for changing window size.
[Changed] InputManager class:
-[Added] Inputs for resizing the window.
Changelog for v.0.5.9 (22.05.2024)
[Changed] WorldRenderer Component:
-[Added] GenerateVoronoiFeatures() method which creates Voronoi regions with respective points at centroid
-[Added] GenerateRandomPoints() method to generate random points in the diagram
-[Added] ComputeVoronoiDiagram() - this method checks how the sites are positioned and creates respective regions to the diagram (of course with points)
-[Added] ClipVoronoiCells() method which clips the sites of the diagram. so they are close to each other and not far far away
-[Added] PlaceFeatures() method to place the features at the terrain that are in the diagram (you can also add some conditions to make it fancier)
-[Added] PlaceTree() method to place a tree - TODO: create an instanced render GameObject, so it doesn't lag that much
-[Added] DrawFeatures() method which draws the features on the WorldMesh
-[Changed] HeightData field from private to public
Changelog for v.0.5.10 (27.05.2024)
[Removed] Pathfinder component
[Removed] Searchparameters class
[Added] Node class:
-[Added] CurrectCost and ParentNode fields.
[Added] PathfindingManager class:
-[Added] GetNeighbors method.
-[Added] CalculatePath method. This method takes 2 nodes as input (start and goal) and calulates the path between them using A* algorithm.
-[Added] PathToListOfPoints method.
Changelog for v.0.5.11 (27.05.2024)
[Added] BloomSetting class
[Added] Bloom component class:
-[Implemented] All component methods.
-[Added] Bloom logic and drawing.
[Added] Shadars used for bloom.
[Changed] Renderer class:
-[Added] Support for bloom.
Changelog for v.0.5.11.1 (28.05.2024)
[Changed] InstancedRendererUnit component class:
-[Fixed] Frustum culling not working properly.
[Renamed] PathfindingManager class to Pathfinding
Changelog for v.0.5.12 (29.05.2024)
[Changed] Renderer class:
-[Fixed] Instanced models 'bleeding' into other scenes.
[Added] Models:
-[Added] Sawmill model
-[Added] Campfire model
-[Added] Grass model
-[Added] Human house model
-[Added] Tent model
Changelog for v.0.5.13 (30.05.2024)
[Added] MapNode class:
-[Added] Location, NodeCost, Height and Connections fields.
[Changed] WorldRenderer class:
-[Added] MapNodes 2D array field.
-[Changed] LoadHeightData method now additionaly initializes MapNodes and their connections using terrain shape
-[Changed] WorldRenderer now generates terrain in +X +Z space instead of +X -Z space.
[Changed] Pathfinding class:
-[Changed] GetNeighbors method now uses WorldRenderer's MapNodes for genetaing node's neighbors
-[Added] PathToQueueOfPoints method
[Changed] PickingManager class:
-[Added] PickGround method that given cursor screen position returns approximate point on the terrain that cursor point to.
[Changed] Node class:
-[Fixed] Contructor incorrectly initializing CurrentCost field if ParentNode was set to null.
Changelog for v.0.5.14 (01.06.2024)
[Added] AgentState abstract class:
-[Added] Initialize and UpdateState abstract methods
-[Added] State field
[Added] Idle agent state class:
-[Implemented] Initialize method that tries to initialize Wander state if it's not initialized yet
-[Implemented] UpdateState method that increments timer and if it reaches alloted idle time it changes state to the state that invoked this Idle state.
[Added] Wander agent state class:
-[Implemented] Initialize method that tries to initialize Idle state if it's not initialized yet
-[Implemented] UpdateState method that paths to random place around the agent, walks there and then changes state to idle.
[Added] Agent component class:
-[Implemented] All component methods
-[Added] AgentStates dictionary and _currentState fields
-[Added] Updating _currentState in update method
[Changed] Pathfinding class:
-[Changed] Pathfinding class and all it's methods to static
[Changed] PickingManager class:
-[Added] InterpolateWorldHeight method.
Changelog for v.0.5.15 (02.06.2024)
[Added] AgentsManager class:
-[Added] Units and Enemies agent lists.
[Changed] Wander agent state class:
-[Added] AngleDegrees method that given to Vector2s retu...
v0.5.0
Changelog for v.0.4.0 (07.05.2024)
[Changed] Globals Class:
-[Changed] TotalSeconds is now renamed to DeltaTime to better represent the purpose.
[Changed] Camera class:
-[Removed] LookAtTheTargetMatrix, World, View and Projection matrice properties.
-[Removed] Position, Forward, Up, LookAtDirection, TargetPostionToLookAt vector properties.
-[Removed] UpdateProjectionMatrix, UpdateWorldAndView, RotateUpDown methods.
-[Removed] name, up, angle, cameraType fields.
-[Added] MoveCamera method that read the movement inputs from input manager and aplies them to camera.
-[Added] UpdateCameraMatrices method to update global View and Projection matrices using camera data.
-[Added] cameraSpeed field.
-[Changed] Update method to use newly added methods.
[Changed] Game1 class:
-[Added] Debug option to disable DEBUG mode camera.
[Changed] PickingManager class:
-[Changed] Picking result is now stored in list instead of single field. It's to prepare for the future box picking.
Changelog for v.0.4.1 (08.05.2024)
[Changed] SceneManager class:
-[Added] OnLoad method to load all scene's static assets to Renderer when scene is loaded.
[Changed] Camera Component class:
-[Added] UpdateFov method to update zoom of the camera using scroll wheel value form InputManager. This method also uses Lerp to make zooming smooth.
-[Added] ZoomSpeed, LerpSpeed, previousScrollValue, TargetFov, ZoomMin and ZoomMax fields.
-[Changed] UpdateCameraMatrices now also updates ZoomDegrees and ViewPos global fields.
[Changed] Globals class:
-[Added] ZoomDegrees global field.
Changelog for v.0.4.2 (08.05.2024)
[Changed] WorldRenderer Component:
-[Changed] VertexPositionColorNormal is no more - welcome VertexMultitextured - the struct that has a position, normal, texCoords and texWeights or the vertices and also VertexDeclaration for the elements
-[Added] Textures to the terrain
-[Changed] Draw() method now uses seperate drawing functions for the terrain and water
-[Added] LoadTextures() and LoadVertices() methods
-[Changed] SetUpVertices() is no longer a void, and the function works differently
-[Changed] SetUpIndices() return a short array
-[Deleted] Inspector options to change the color of the terrain
[Changed] Terrain_Shader.fx - it now has techniques to make a textured and multitextured terrain - tried making a reflection shader, but doesn't work yet
Changelog for v.0.4.3 (08.05.2024)
[Changed] AssetManager class:
-[Changed] LoadNames method now ignores duplicate models that result from LOD configuration.
[Changed] Camera Component:
-[Changed] ZoomMax from 70 to 75.
[Changed] Models now require config.xml file to access LOD and Multimesh options.
[Changed] Globals class:
-[Added] MainPath string field that stores relative path to project directory regardles of OS differences.
[Changed] ModelData class:
-[Changed] ModelData now stores List of model instead of singular model to support LOD.
-[Changed] ModelData now stores List of boundingSpheres instead of singular boundingSphere to support LOD.
-[Changed] ModelData now stores Textures in 3D List to support LOD and Multimesh texturing*. The structure is as follows: Textures[LOD_ID][Mesh][MapID] where MapID is: 0 - albedo, 1 - normal, 2 - roughness, 3 - metalness, 4 - ambient occlusion
-[Added] _isMultimesh and _lodUsed booleans to store model configuration.
-[Added] CurrentModelIndex stores index of current LOD model to draw.
-[Changed] Draw method to support LOD and Multimesh model drawing.
-[Changed] LoadModel method to support loading LOD and Multimesh models.
[Changed] PickingManager, Renderer, AssetMmanager, MeshRenderer to support ModelData changes.
*Multimesh texturing - Texturing a model that has seperate texture maps for it's meshes.
Changelog for v.0.4.4 (08.05.2024)
[Added] AnimationClip Class:
-[Added] Two nested classes: Keyframe and Bone, because an animation clip is just a set of keyframes with associated bones
-[Added] Time, Rotation, Translation and Transform properties in Keyframe Class
-[Added] Name, List of keyframes properties in the Bone Class
-[Added] List of bones, name and the duration in the Keyframe Class
[Added] Bone Class:
-[Added] Basic hierarchy system of the bones
-[Added] Transformations matrix and vectors for scale and translation, and a quaternion for the rotation
-[Added] Same properties for the fields
[Added] AnimationClipReader Class:
-[Added] Inheritance from the ContentTypeReader<T> which can help reading the AnimationClips from the Content Pipeline - that's nice
Changelog for v.0.4.5 (09.05.2024)
[Added] ModelProperties Class:
-[Added] Skeleton list and AnimationClip list properties
[Added] ModelPropertiesReader Class:
-[Added] Inheritance of the ContentTypeReader<T> for loading custom data from the models needed for animation
[Added] AnimationProcessor Class - need implementation
Changelog for v.0.4.6 (10.05.2024)
[Added] New Models:
-[Added] Archer model.
-[Added] Peasant model.
-[Added] knight model.
-[Added] Cupboard model.
-[Added] Baby Cupboard model.
-[Added] Chair model.
-[Added] Wardrobe model.
[Changed] Scene class:
-[Added] TempName field.
[Changed] SceneManager class:
-[Changed] Changing scene name uses TempName now and saves name only after clicking 'Apply name' button.
Changelog for v.0.4.7 (10.05.2024)
[Added] InstancedRendererController Component class:
-[Added] InstanceData struct that hold world and normal transformation matrices of single instance.
-[Added] Model field.
-[Added] WorldMatrices List to hold world matrices of all instances.
-[Added] Draw method that uses Instancing to draw multiple copies of the same mesh using only one draw call.
-[Implementd] RemoveComponent to remove all linked InstanceRendererUnit components.
-[Implemented] All component methods.
-[Added] AddToAllChildren private method to setup scenes more quickly in DEBUG mode. It iterates through all child objects and adds InstanceRendererUnit to them.
[Added] InstanceRendererUnit Component class:
-[Added] Controller field to store reference to linked InstancedRendererController.
-[Implemented] Update method to check if this Instance should be drawn. If yes add their World matrix to List in linked InstancedRendererController.
-[Implemented] Initialize method to try to link with InstancedRendererController in parent object. If linking failed disable this component.
-[Implemented] The rest of component methods.
[Changed] PBR and ShadowMaps shaders:
-[Added] Vertex shader for Instance rendering.
-[Added] Techniques to use Instancing.
[Changed] Globals class:
-[Added] VertexDeclarations for Instance rendering.
-[Added] DEBUG boolean option to draw wireframe.
[Changed] ModelData class:
-[Moved] LOD check to it's own method: ApplyLOD
-[Moved] Passing textures to the shaders to it's own method: PassTextures
[Changed] Renderer class:
-[Changed] Shadow rending now also uses Instances.
-[Added] Instance rendering.
[Changed] SceneManager class:
-[Changed] OnLoad method now also loads InstancedRendererControllers into Renderer.
Changelog for v.0.4.8 (11.05.2024)
[Changed] InstancedRendererController Component class:
-[Changed] WorldMatrices List now holds InstaceData instead of Matrices. Updated all uses accordingly.
[Changed] InstanceRendererUnit Component class:
-[Added] _data field to hold Instance data.
Changelog for v.0.4.9 (12.05.2024)
[Changed] ModelData class:
-[Changed] Reverted the boundingSphere change from v.0.4.3 because it was deemed unnesesary. Updated all uses accordingly.
[Changed] Globals class:
-[Added] Solid and Wireframe RasterizerStates to make toggling wireframe mode easier.
[Changed] PickingManager class:
-[Added] PickingFrustum struct to represent picking volume of box picking.
-[Added] CalculatePickingFrustum method.
-[Changed] CalculateMouseRay method now uses current window dimensions instead of being hardcoded.
-[Changed] CheckForRay method now also checks for box picking if LMB was held long enough.
-[Added] On screen visualization of picking rectangle.
[Changed] Renderer class:
-[Added] Option to draw Box picking frustum volume.
Changelog for v.0.4.10 (12.05.2024)
[Changed] SkinnedAnimationAux directory is now named AnimationPipeline
[Added] AnimationProcessor Class for the logic of the played animation
-[Added] Process() and ProcessSkeleton() method to process the loaded animation and the rig of the model
[Added] AnimationPlayer Class, which is responsible for playing the animation
-[Added] Update() method to get the duration of the animation
-[Added] Internal BoneInfo Class, to get the info about the changing rig bones in the model
[Added] AnimatedModelRenderer Class - will be a component in the future
-[Added] LoadContent() method to load up the necessary properties for the model
-[Added] PlayClip() method to play the animation
-[Added] Update() method to update the model in the runtime
-[Added] Draw() method - not yet implemented
Changelog for v.0.4.11 (13.05.2024)
[Deleted] Previous implementation of the pipeline - it didn't work and now I know why
[Added] New solution and added it's reference to the RTS_Engine - Animation
-[Added] Animations Class responsible for the animations of the models
-[Added] Clip Class responsible for keyframes and duration of the animation
-[Added] Keyframe Class, which has all the data about the bones...
v0.4.0
Changelog for v.0.3.1 (08.04.2024)
[Changed] AssetManager class:
- [Added] The implementation of available assets list. The names of all available assets are now neatly packed into lists, one list per asset type, and are globaly accesible as static lists of
AssetManagerclass. The list are prepared by direcly readingContent.mgcbfile at the initialization of theAssetManagerclass.
[Changed] All Renderer Component classes:
- [Added] The option to change according asset form Inspector Window.
[Changed] MeshRenderer class:
- [Added] Name field to represent
Modelname. This solution isn't perfect but oh well.
Changelog for v.0.3.2 (08.04.2024)
[Added] AnimatedSpriteManager component
- [Implemented] Component abstract methods in the
AnimatedSpriteRenderer - [Added]
Start,StopandResetAnimation methods - [Added] GUI Debug menu for changing values of the animation
[Added] Assets:
- [Added] coin.png
- [Added] background.png
[Added] TotalSeconds property in the Globals
- [Added]
Updatemethod in theGlobalsto get the time of the game
[Changed] AssetManager Class:
- [Added]
Texture2Dproperty for the default animated sprite
[Changed] BaseScene Class:
- [Added] New game objects which represents coin animation and a smiley face
- [Added] New text Game Object
- [Added] Updating the text object in the
Update()method inBaseSceneClass
[Changed] TextRenderer component
- [Changed]
Updatemethod now updates, when the content is different
Changelog for v.0.3.3 (08.04.2024)
[Changed] FileManager class:
- [Changed]
LoadKeyBindingsis now static and returns keybindings in special data structure instead of storing them in FileManager's lists. - [Added]
KeyBindsDataclass to act as data structure forLoadKeyBindingsmethod - [Changed] Class is now initializes in
Game1for possible future aplications.
[Changed] InputManager class:
- [Changed]
PopulateDictwas changed to account forFileManagerclass changes.
[Changed] GameObject class:
- [Added]
SaveSceneToXmlpublic andObjectToXmlStringprivate methods that converts whole scene graph to XML compatible string.
[Changed] All components:
- [Added]
ComponentToXmlStringmethod that converts component to XML compatible string.
Changelog for v.0.3.4 (08.04.2024)
[Changed] All Components:
- [Added]
Deserializemethod to initialize component using values form XML file.
[Changed] SpriteRenderer class:
- [Changed]
ComponentToXmlStringmethod now serializes sprite color.
[Changed] All Renderer Components:
- [Added]
LoadModel,LoadSpriteetc. to load assets using asset names.
[Changed] Transform class:
- [Added] Move method
[Changed] FileManager class:
- [Added]
DeserializeScenemethod that recreates scene graph using data from XLM file.
[Changed] IScene interface:
- [Added]
SaveToFilemethod
[Changed] BaseScene class:
- [Changed] Whole class now uses hierarchy form
gameObjectclass - [Implemented]
Sceneserialization method
[Changed] SceneManager class:
- [Added] Button in Inspector to save current scene to XML file. WARNING: IT WORKS ONLY FOR BASESCENE
[Added] BaseScene.xml asset
[To-Do]: Restructure scene class.
Changelog for v.0.3.5 (08.04.2024)
[Changed] AnimatedSpriteRenderer component:
- [Added] Setters for
Frames,FrameTimeandSpriteSheetto make it more customizable - [Changed]
Frames,FrameTimeandSpriteSheethave default values
[Changed] BaseScene Class:
-[Added] coin object now is initialized with custom values
Changelog for v.0.3.6 (09.04.2024)
[Changed] AnimatedSpriteRenderer component:
- [Implemented]
Deserializemethod - [Added]
LoadSpriteSheet(name)method
[Changed] BaseScene Class:
- [Added] Background in the scene with all the parameters set up
[Changed] RTS_Engine.csproj:
- [Added] Preprocessor variable to check if the operating system is Windows
[Changed] AssetManager Class:
- [Changed]
StreamReadernow checks if the OS is Windows or Unix and loads from the OS specific path
[Changed] BaseScene Class:
- [Added] Preprocessor condition for OS specific paths
Changelog for v.0.3.7 (09.04.2024)
[Changed] IScene Interface into Scene Abstract Class:
- [Added]
NameandSceneRootproperties into theSceneClass
[Changed] SceneManager Class:
- [Changed] Every
IScenechanged toScene
[Changed] BaseScene and SecondScene Classes:
- [Changed] All methods override the abstract methods from the
SceneClass - [Changed] Deleted the properties, because they are now in the abstract
SceneClass
[Changed] SecondScene Class:
- [Changed] Deleted old code and added new code to show a basic cube on the screen
- [Added]
SaveToFile()method to save the second scene into the XML file
[Changed] Game1 Class:
- [Added]
DepthStencilState()for the fixed depth of the objects
[Changed] MeshRenderer Class:
- [Added] Default Ambient Light
[Added] CollisionManager class:
- [Implemented] Logic for colission detection
- [Added] Creation of bounding spheres for
GameObjectsutilizingCollissioncomponent
[Added] Collision class
- [Added] Bool field to control the state of colliding objects
[Added] Assets:
- [Added] Infested Chair unit model
- [Added] Infested Wardrobe unit model
- [Added] Infested Sawmill building model
Changelog for v.0.3.8 (10.04.2024)
[Changed] CollisionManager class:
- [Changed]
BoundingSphereis now created in the component
[Changed] Collider component class:
- [Implemented]
Inspectfunction - [Added]
Updatecreates aBoundingSpherearound models which utilize the component - [Added]
Scaleis now equal to thescale.xof theparentObject
[Changed] ThirdScene Class:
- [Changed] Making boxes move together
Changelog for v.0.3.9 (11.04.2024)
[Added] NoiseField Generic Class:
- [Added]
Field,WidthandHeightproperties - [Added] Basic constructor for the class
- [Added]
Flatten()method to convert field into the 1D array
[Added] PerlinNoiseGenerator Class:
- [Added]
Octaves,Persistance,Randomproperties to modify the generated noise - [Added]
InterpolationAlgorithmproperty - [Added]
PerlinNoiseGeneratorconstructor to initialize the properties - [Added]
GenerateWhiteNoise()method to generate a basic white noise - [Added]
SmoothNoiseField()method to smooth out a basic white noise - [Added]
PerlinNoiseField()method to create a perlin noise from the smoothed white noise
Changelog for v.0.3.10 (11.04.2024)
[Added] Camera class
- [Added] Code from
SceneCameratoCamerato have sth to work on
[Changed] Collider class
- [Changed] Did a bit of cosmetic work
[Changed] Globals class
- [Added] Global
GraphicsDeviceto use with Camera
[Changed] Game1 class
- [Added] Passing the
GraphicsDevicetoGlobals
[Changed] Globals class is no longer a singleton:
- [Changed] All relevant fields are now static.
- [Removed]
Instancefield. Updated all classes that used Instance field. - [Changed]
GetAllComponentsmethod is now static - [Changed]
GetAllComponentsandComponentTypeslist are now included in RELEASE
[Changed] FileManager class:
- [Changed]
DeserializeObjectmethod now deserializes component in more generic way usingComponentTypeslist fromGlobalsclass.
Changelog for v.0.3.11 (11.04.2024)
[Added] LoadedScene class to store scenes loaded from XML file.
[Moved] XML files with scenes data to another dictionary. Changed path accordingly where it was nessesary.
[Fixed] AnimatedSpriteRenderer class:
- [Fixed]
Colornot being deserialized correctly. It was deserializing as floats instead of integers.
[Fixed] SpiteRenderer class:
- [Fixed] Deserializing was skipping
SpiteRendererdue to typo in<type>tag in scene save file. Corrected the typo in serialization code. - [Fixed]
Colornot being deserialized correctly. It was deserializing as floats instead of integers.
[Fixed] FileManager class:
- [Fixed] Component deserialization step of
DeserializeObjectmethod skipping deserialing ofTransformcomponent due to it not being on ComponentTypes list. Added extra check for component type to eliminate this issue.
[Changed] Globals class:
- [Added]
AvailableScenesstatic list to hold the paths to all scene that are avaiable for loading. - [Added]
UpdateScenesListstatic method to update the paths of all available scenes.
[Changed] SceneManager class:
- [Removed]
RemoveScenemethod. - [Removed]
GetCurrentScenemethod due to it being obsolete. - [Added]
CurrentScenepublic field. - [Added]
ChangeScenepublic method. - [Added] The option to load and save the scenes as well as create new scenes in Debug Window.
- [Changed] Selecting and removing scenes elements in Debug Window are better organized now.
[Added] Loss scene save file.
Changelog for v.0.3.12 (12.04.2024)
[Changed] PerlinNoiseGenerator Class:
- [Added]
GeneratePerlinNoisegeneric method to generate a basic Perlin Noise
[Added] INoiseFilter generic interface
- [Added] Generic
Filtermethod
[Added] LinearGradientFilter class:
- [Added]
StartColor,EndColorandStartPercentageproperties - [Implemented] Generic
Filter()method to generate a gradient texture
[Added] CustomGradientMethod class:
- [Added]
ColorPairstructure - [Added]
Start,EndandColorproperties - [Added]
IsInRange()method to check if the value provided is in range of the start and end value - [Added] Overrided
ToString()method to show which color is (from start to end) - [Added] List of `Color...
v0.3.0
Implementing SceneManager
- [Added]
ISceneinterface to create multiple classes of scenes - [Added]
SceneManagerclass to manage the scenes in the game
[Changed] ImGui.ini parameters
Created hard coded BaseScene for testing; implementing SecondScene
- [Added]
BaseSceneclass usingISceneinterface - [Added]
SecondSceneclass usingISceneinterface (not yet implemented)
[Changed] SceneManager class:
- [Changed] Initializing scenes in
AddScene()method
[Changed] IScene interface:
- [Changed] Deleted
Load()method and createdInitialize()method - [Added]
AddGameObject(GameObject)method - [Added]
RemoveGameObject(GameObject)method - [Added]
DrawHierarchy()method for debugging
[Changed] Game1 class:
- [Changed] Deleted all
GameObjectobjects - [Changed]
SceneManagermanages the visual representation of objects in game - [Changed]
SceneManagerdraws hierarchy in the debug through the currently loaded scene
Created SecondScene Class; made some changes to SceneManager and IScene
[Added] SecondScene Class:
- [Added] All
IScenemethods
[Changed] IScene Interface:
- [Added]
Activate()method - [Added]
Deactivate()method
[Added] SceneSelection window in SceneManager Class:
- [Added] ImGui Control Panel for
SceneManager - [Added] Buttons for adding and removing Scenes
[Changed] MonoGame Content:
- [Deleted] Ship model
- [Added] Monke model
Creating Scene Camera
[Added] SceneCamera Class
- [Added] Basic properties for the camera
- [Added] World, View and Projection Matrices to be in one place
[To-Do] Add methods to control the camera
[To-Do] Add methods to update the matrices
Added updating methods in the SceneCamera class
[Changed] SceneCamera class
- [Added]
UpdateWorldAndView()method to update world and view matrices - [Added]
UpdateProjectionMatrix()method to update projection matrix - [Added]
Update(gameTime)method to update cameras position and rotation when the game is running
[To-Do] Implementation of UpdateFPSKeyboardLayout() method
[To-Do] Implementation of UpdateEditorKeyboardLayout() method
[To-Do] Additional methods to control the camera e.g. MoveUp(), MoveForward(), Rotate() etc.
Updated class SceneCamera
[Changed] SceneCamera Class
- [Implemented]
UpdateFPSKeyboardLayoutmethod - [Implemented]
UpdateEditorKeyboardLayoutmethod - [Added] Methods for moving the camera e.g.
MoveUp(),MoveDown()etc. - [Added] Method for rotating the camera e.g.
RotateUp(),RotateDown()etc. - [Changed] Setters for the properties to Update the World and View matrices
v0.2.0
Release v0.2.0
-
[Added]
ECSwith two components:TransformandMeshRenderer[Changes]
GameObjectclass:- [Added] Generic
GetComponent<T>()method that returns the first component of given class - [Added]
GetComponent(Type)method - [Added]
AddComponent(Component)method - [Added] Generic
AddComponent<T>()method - [Added]
RemoveComponent(Component)method - [Added] Generic
RemoveFirstComponentOfType<T>()method that removes first found component of given type
[Implemented]
Transformclass:- [Added] Transform hierarchy
- [Added] Basic transformations (translation, rotation, scaling)
- [Added] Transform Updating based on dirty flag
[Changed] Component abstract class:
- [Added] Abstract
Initialize()method to enable more complicated default initialization inAddComponentgeneric method inGameObjectclass
- [Added] Generic
-
[Added]
FileManagerclass for loading custom input[Implemented]
FileManagerclass:- [Added] XML config file with keybindings
- [Added]
LoadKeyBindings()method that loads keybindings from the XML file
-
[Added] Hierarchy and Inspector debugging windows
To-do
SceneandSceneManagerclasses for scene loadingCameraControllercomponent for GameObjectMapGeneratorbasic implementation
v0.1.0
Release 0.1.0
- [Added] Keyboard Handling in
InputManager - [Added] Mouse Handling in
InputManager
To-Do
- Entity Component System with
TransformandMeshRenderer - File Manager to handle custom input (keybindings) (in future - saving and loading)
SceneandSceneManagerclasses for creating scenes in game and drawing Game Objects in them
v0.0.0
This is the initial setup of our game engine. It includes:
- MonoGame integration
- ImGuiNET integration
Those are just basics we implemented so far.