Skip to content

v0.4.0

Choose a tag to compare

@Gregorooooo02 Gregorooooo02 released this 06 May 11:58
· 369 commits to main since this release

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 ColorPairs property
  • [Implemented] Filter() method to create a gradient of custom values from the Colors List
  • [Added] AddColorPoint() method to add custom colors to the list

[Added] INoiseTransformer Generic Interface to transform the noiseField into different object

[Added] Texture2DTransformer class:

  • [Added] GraphicsDevice property
  • [Implemented] Transform(colorField) generic method to transform a color data into colored texture
  • [Implemented] Transform(noiseField) generic method to transform a noise data into a grayscale texture

[Added] MapScene class - it just shows a generated texture using SpiteRenderer component

[Changed] Globals class:

  • [Added] GraphicsDevice property

[Changed] Game1 class:

  • [Added] Initializing Globals GraphicDevice with the main GraphicsDevice from GraphicsDeviceManager
  • [Added] Adding MapScene into the SceneManager object

Changelog for v.0.3.13 (12.04.2024)

[Changed] MapScene Class:

  • [Deleted] GeneratedNoiseTexture() method

[Changed] PerlinNoiseGenerator Class:

  • [Changed] Octaves and Persistance properties now do not have getters and setters for the ImGui's sake
  • [Changed] Constructor default values are now different

[Added] GenerateMap Class:

  • [Added] GenerateNoiseTexture() method which was in the MapScene Class
  • [Added] MapInspector() method to change the values of the map (every change generates a new map with values from the inspector)

[Changed] Globals Class:

  • [Added] MapModifyVisible boolean

[Changed] Game1 Class:

  • [Added] In ImGuiLayout() added another condition to show the MapInspector()

Changelog for v.0.3.14 (16.04.2024)

[Changed] Camera Component:

  • [Deleted] UpdateFPS and UpdateEditor Layout methods
  • [Changed] Update method now does nothing
  • [Changed] Globals properties are now static, so Instance is useless
  • [Commented] MouseState and KeyboardState properties so it doesn't overlap with Mouse and Keyboard State from the SceneCamera

[Changed] Game1 Class:

  • [Changed] Globals MapModify boolean is now static, so Instance is useless
  • [Changed] Order of adding scenes to the SceneManager
  • [Added] Map Modifier checkbox in debug window.

[Changed] Globals Class:

  • [Checked] MacOS directive is good, works fine
  • [Changed] Added ToList() to the GetFiles("Scenes")

[Changed] GenerateMap Class:

  • [Changed] GraphicsDevice is static in Globals, so Instance is useless

[Changed] MapScene Class:

  • [Changed] Name of the Scene

Changelog for v.0.3.15 (19.04.2024)

[Added] New models:

  • [Added] Tent model
  • [Added] Campfire model
  • [Added] Wardrobe model
  • [Added] Sawmill model
  • [Added] 3 tree models

Changelog for v.0.3.16 (21.04.2024)

[Changed] BaseScene save file

  • [Changed] BaseScene is now our camp scene for the game

[Changed] MeshRenderer component class:

  • [Changed] DrawModel method now works more low level and allows the use of custom shader.

[Added] TestEffect.fx - test shader

[Changed] Globals class:

  • [Added] TestEffect field to hold custom effect.

[Changed] Game1 class:

  • [Added] Loading TestEffect.fx and storing it in Globals class TestEffect field

Changelog for v.0.3.17 (23.04.2024)

[Changed] Globals class:

  • [Added] World, View and Projection Matrices fields for camera.

[Changed] Camera component class:

  • [Implemented] ComponentToXmlString method.

Changelog for v.0.3.18 (25.04.2024)

[Changed] Game1 Class:

  • [Added] Preprocessor condition for loading effects, so it works on Windows and macOS
  • [Changed] Preprocessor directives in the game loop, so we can use the sceneCamera in the Debug configuration

Changelog for v.0.3.19 (26.04.2024)

[Added] Layer Component

[Changed] Globals Class:

  • [Added] public enum for the LayerType

[Added] WorldGenerator Class

[Changed] MapScene Class:

  • [Added] Basic mesh object to imitate our ground
  • [Changed] Named some objects from the code

[Changed] PerlinNoiseGenerator Class:

  • [Changed] Default values are now 6 octaves and 0.5 persistance

[Changed] GenerateMap Class:

  • [Changed] Added a a basic condition if the generated texture should be colored or default (black and white) - this will help in the future to se if the height map generates correctly

Changelog for v.0.3.20 (28.04.2024)

[Added] PBR_Shader.fx Effect for PBR

[Added] Assets:

  • [Added] albedo, ao, metalness, normal and roughness maps to test the PBR shader
  • [Changed] Default model also has those maps to check if the PBR works

[Added] ModelData Class:

  • [Added] String array of maps to easily read them from every model
  • [Added] Model, ModelPath properties to load the model
  • [Added] BoundingSphere property for the frustum to work
  • [Added] List of Texture2D to be loaded into the model
  • [Added] CalculateBoundingSphere() method to create a corresponding sphere around the meshes of the model (need for the frustum culling)
  • [Added] LoadModel() method

[Changed] MeshRenderer Component:

  • [Deleted] Model and name properties
  • [Added] ModelData property, which utilizes all the necessary mesh, textures and shaders loading
  • [Changed] DrawModel() method - temporary testing if the PBR works

Changelog for v.0.3.21 (29.04.2024)

[Changed] All Components:

  • [Changed] Draw() method is no longer overridden - does nothing right now

Changelog for v.0.3.22 (30.04.2024)

[Changed] InputManager Class:

  • [Added] Scroll wheel support

[Changed] `SceneManager] Class:

  • [Added] Cancel button in scene selection screen

[Added] WorldRenderer Component:

  • [Added] Texture2D property for the loaded height map
  • [Added] Overridden methods from component class
  • [Added] SetUpVertices() and SetUpIndices() methods for setting up the mesh using the loaded height map
  • [Added] LoadHeightData() method to load the heigh map from the file into the 2D array heightData
  • [Added] Inspect() method to check if the height map is loaded correctly, which width and height it has and also a button to remove the component
  • [Added] Serialization and deserialization methods but not yet implemented because it's not fully implemented yet

[Changed] Game1 Class:

  • [Removed] Map Modifier window in ImGui, because it's now useless

[Changed] Globals Class:

  • [Removed] MapModifyVisible boolean

[Changed] AssetManager Class:

  • [Added] Height map for the WorldRenderer to be loaded when the scene is on

[Changed] GenerateMap Class:

  • [Added] SaveTextureData() method to save the generated texture into the .bmp file
  • [Removed] MapInspector() method

[Deleted] WorldGenerator Class

[Changed] MapScene Class:

  • [Removed] Mesh object which was earlier in the scene
  • [Added] New mesh object which has a WorldRenderer Component

Changelog for v.0.3.23 (01.05.2024)

[Added] Basic effect for the terrain

[Changed] WorldRendered Component:

  • [Added] _effect and _colors properties
  • [Changed] FillMode is now Solid
  • [Changed] _effects is now responsible for drawing, not BasicEffect
  • [Added] On Initialize() the effect is being loaded
  • [Added] Color regions of the terrains in SetUpVertices() method
  • [Changed] In Inspect() user can change the colors of the regions

Changelog for v.0.3.24 (03.05.2024)

[Added] ShadowMaps.fx shader for shadow mapping

[Changed] PBR_Shader.fx:

  • [Added] Support for the shadow mapping

[Changed] ModelData Class:

  • [Changed] Draw() is now responsible for setting up the values of the PBR shader

[Added] Renderer Class, which is responsible for rendering everything in the game

Changelog for v.0.3.25 (04.05.2024)

[Changed] All drawing methods are now in Renderer Class

Changelog for v.0.3.26 (05.05.2024)

[Added] Pickable Component for picking
[Added] PickingManager to creates raycasts and check if the player clicked the desired object

Changelog for v.0.3.27 (06.05.2024)

[Added] Compiled shaders to work on Unix systems

[Changed] WorldRenderer Component:

  • [Added] VertexPositionColorNormal struct for the coloring and normals of the world mesh
  • [Added] Vertex and Index buffers to load them once when drawing
  • [Added] Temporary worldMatrix, because ParentObject.Transform.ModelMatrix won't work - NEED FIX

[Changed] PerlinNoiseGenerator Class:

  • [Added] FallOff and ReversedFallOff methods to smooth out the terrain around or inside the noise

Changelog for v.0.3.28 (06.05.2024)

[Changed] WorldRenderer Component:

  • [Changed] Colors are now back to original
  • [Changed] In SetUpVertices() method the heightData differs (changing the height of the grass and mountains)

[Changed] PerlinNoiseGenerator Class:

  • [Changed] FallOffNoise() method generates a much better falloff than before
  • [Added] Evaluate() method to make the falloff smoother
  • [Changed] In GeneratePerlinNoise() method the fallOff is being subtracted from the generated perlinNoise, so we now have a nice falloff