Skip to content

Releases: Gregorooooo02/RTS_Engine

v1.1

29 Jun 18:50

Choose a tag to compare

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

19 Jun 21:40

Choose a tag to compare

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...

Read more

v0.5.0

17 May 10:00

Choose a tag to compare

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...

Read more

v0.4.0

06 May 11:58

Choose a tag to compare

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 AssetManager class. The list are prepared by direcly reading Content.mgcb file at the initialization of the AssetManager class.

[Changed] All Renderer Component classes:

  • [Added] The option to change according asset form Inspector Window.

[Changed] MeshRenderer class:

  • [Added] Name field to represent Model name. 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, Stop and Reset Animation 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] Update method in the Globals to get the time of the game

[Changed] AssetManager Class:

  • [Added] Texture2D property 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 in BaseScene Class

[Changed] TextRenderer component

  • [Changed] Update method now updates, when the content is different

Changelog for v.0.3.3 (08.04.2024)

[Changed] FileManager class:

  • [Changed] LoadKeyBindings is now static and returns keybindings in special data structure instead of storing them in FileManager's lists.
  • [Added] KeyBindsData class to act as data structure for LoadKeyBindings method
  • [Changed] Class is now initializes in Game1 for possible future aplications.

[Changed] InputManager class:

  • [Changed] PopulateDict was changed to account for FileManager class changes.

[Changed] GameObject class:

  • [Added] SaveSceneToXml public and ObjectToXmlString private methods that converts whole scene graph to XML compatible string.

[Changed] All components:

  • [Added] ComponentToXmlString method that converts component to XML compatible string.

Changelog for v.0.3.4 (08.04.2024)

[Changed] All Components:

  • [Added] Deserialize method to initialize component using values form XML file.

[Changed] SpriteRenderer class:

  • [Changed] ComponentToXmlString method now serializes sprite color.

[Changed] All Renderer Components:

  • [Added] LoadModel, LoadSprite etc. to load assets using asset names.

[Changed] Transform class:

  • [Added] Move method

[Changed] FileManager class:

  • [Added] DeserializeScene method that recreates scene graph using data from XLM file.

[Changed] IScene interface:

  • [Added] SaveToFile method

[Changed] BaseScene class:

  • [Changed] Whole class now uses hierarchy form gameObject class
  • [Implemented] Scene serialization 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, FrameTime and SpriteSheet to make it more customizable
  • [Changed] Frames, FrameTime and SpriteSheet have 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] Deserialize method
  • [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] StreamReader now 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] Name and SceneRoot properties into the Scene Class

[Changed] SceneManager Class:

  • [Changed] Every IScene changed to Scene

[Changed] BaseScene and SecondScene Classes:

  • [Changed] All methods override the abstract methods from the Scene Class
  • [Changed] Deleted the properties, because they are now in the abstract Scene Class

[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 GameObjects utilizing Collission component

[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] BoundingSphere is now created in the component

[Changed] Collider component class:

  • [Implemented] Inspect function
  • [Added] Update creates a BoundingSphere around models which utilize the component
  • [Added] Scale is now equal to the scale.x of the parentObject

[Changed] ThirdScene Class:

  • [Changed] Making boxes move together

Changelog for v.0.3.9 (11.04.2024)

[Added] NoiseField Generic Class:

  • [Added] Field, Width and Height properties
  • [Added] Basic constructor for the class
  • [Added] Flatten() method to convert field into the 1D array

[Added] PerlinNoiseGenerator Class:

  • [Added] Octaves, Persistance, Random properties to modify the generated noise
  • [Added] InterpolationAlgorithm property
  • [Added] PerlinNoiseGenerator constructor 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 SceneCamera to Camera to have sth to work on

[Changed] Collider class

  • [Changed] Did a bit of cosmetic work

[Changed] Globals class

  • [Added] Global GraphicsDevice to use with Camera

[Changed] Game1 class

  • [Added] Passing the GraphicsDevice to Globals

[Changed] Globals class is no longer a singleton:

  • [Changed] All relevant fields are now static.
  • [Removed] Instance field. Updated all classes that used Instance field.
  • [Changed] GetAllComponents method is now static
  • [Changed] GetAllComponents and ComponentTypes list are now included in RELEASE

[Changed] FileManager class:

  • [Changed] DeserializeObject method now deserializes component in more generic way using ComponentTypes list from Globals class.

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] Color not being deserialized correctly. It was deserializing as floats instead of integers.

[Fixed] SpiteRenderer class:

  • [Fixed] Deserializing was skipping SpiteRenderer due to typo in <type> tag in scene save file. Corrected the typo in serialization code.
  • [Fixed] Color not being deserialized correctly. It was deserializing as floats instead of integers.

[Fixed] FileManager class:

  • [Fixed] Component deserialization step of DeserializeObject method skipping deserialing of Transform component due to it not being on ComponentTypes list. Added extra check for component type to eliminate this issue.

[Changed] Globals class:

  • [Added] AvailableScenes static list to hold the paths to all scene that are avaiable for loading.
  • [Added] UpdateScenesList static method to update the paths of all available scenes.

[Changed] SceneManager class:

  • [Removed] RemoveScene method.
  • [Removed] GetCurrentScene method due to it being obsolete.
  • [Added] CurrentScene public field.
  • [Added] ChangeScene public 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] GeneratePerlinNoise generic method to generate a basic Perlin Noise

[Added] INoiseFilter generic interface

  • [Added] Generic Filter method

[Added] LinearGradientFilter class:

  • [Added] StartColor, EndColor and StartPercentage properties
  • [Implemented] Generic Filter() method to generate a gradient texture

[Added] CustomGradientMethod class:

  • [Added] ColorPair structure
  • [Added] Start, End and Color properties
  • [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...
Read more

v0.3.0

04 Apr 12:44

Choose a tag to compare

Implementing SceneManager

  • [Added] IScene interface to create multiple classes of scenes
  • [Added] SceneManager class to manage the scenes in the game

[Changed] ImGui.ini parameters

Created hard coded BaseScene for testing; implementing SecondScene

  • [Added] BaseScene class using IScene interface
  • [Added] SecondScene class using IScene interface (not yet implemented)

[Changed] SceneManager class:

  • [Changed] Initializing scenes in AddScene() method

[Changed] IScene interface:

  • [Changed] Deleted Load() method and created Initialize() method
  • [Added] AddGameObject(GameObject) method
  • [Added] RemoveGameObject(GameObject) method
  • [Added] DrawHierarchy() method for debugging

[Changed] Game1 class:

  • [Changed] Deleted all GameObject objects
  • [Changed] SceneManager manages the visual representation of objects in game
  • [Changed] SceneManager draws hierarchy in the debug through the currently loaded scene

Created SecondScene Class; made some changes to SceneManager and IScene

[Added] SecondScene Class:

  • [Added] All IScene methods

[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] UpdateFPSKeyboardLayout method
  • [Implemented] UpdateEditorKeyboardLayout method
  • [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

28 Mar 13:32

Choose a tag to compare

Release v0.2.0

  • [Added] ECS with two components: Transform and MeshRenderer

    [Changes] GameObject class:

    • [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] Transform class:

    • [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 in AddComponent generic method in GameObject class
  • [Added] FileManager class for loading custom input

    [Implemented] FileManager class:

    • [Added] XML config file with keybindings
    • [Added] LoadKeyBindings() method that loads keybindings from the XML file
  • [Added] Hierarchy and Inspector debugging windows

To-do

  • Scene and SceneManager classes for scene loading
  • CameraController component for GameObject
  • MapGenerator basic implementation

v0.1.0

26 Mar 11:16
34c968d

Choose a tag to compare

Release 0.1.0

  • [Added] Keyboard Handling in InputManager
  • [Added] Mouse Handling in InputManager

To-Do

  • Entity Component System with Transform and MeshRenderer
  • File Manager to handle custom input (keybindings) (in future - saving and loading)
  • Scene and SceneManager classes for creating scenes in game and drawing Game Objects in them

v0.0.0

16 Mar 14:40

Choose a tag to compare

v0.0.0 Pre-release
Pre-release

This is the initial setup of our game engine. It includes:

  • MonoGame integration
  • ImGuiNET integration

Those are just basics we implemented so far.