Hello! My name is Sebastian Ploch and I'm a Games Programmer, currently getting a degree on Games Programming at Staffordshire University. I've been passionate towards technology and games since youngest days, but predominately programming is what gives me the most fun and feels the most rewarding but equally challenging. I see myself as an open-minded, quick-learning and humble being that dreams to work in an industry that combines both of my dream worlds!
PS: I'm glad to see you in here & hope to meet you soon! meanwhile you can check my other social media (i promise they don't bite)
- C++ and Object-Oriented Programming
- C# (including .net library and threading)
- Graphics Concepts (DirectX 11 / OpenGL)
- Unreal Engine 4
- Unity Engine
- Git Usage (including GitHub)
- Problem Solving
Level editor based off Retro Mario Bros game, that allows the player to create own levels, save and play through. Game comes with one pre-defined level to work as a guidance in what you can make yourself. Game has been built using own framework powered by SDL library to provide means to talk with hardware to draw sprites/play sounds/poll inputs etc...GitHub Repository
This project has taught me a lot, as was a first ever approach in making framework that will essentially mimic a game engine. That later would be used in making a game (Mario level editor in this case). I've earned a lot of experience in making reusable general classes as well as systems that will govern application built within and allow functionality and mechanics.
Throughout the project I’ve built multiple classes as part of the framework, being:
which all encompass some logic often tied with SDL functions, to provide means of doing particular task in most efficient and easiest way, essentially abstracting away from any confusion making using the framework a breeze to create app/game within.
For example, loading and saving a texture is as simple as:
Texture2D* _texture = new Texture2D(renderer); _texture->LoadFromFile(Path);
just by abstracting away SDL functionality into TextureClass that allows developer to quickly and efficiently do a task without having to worry about 10's of lines of code, and instead using just one function on a variable that will do everything for them.
Another case of providing easy means to do particular task would be Collisions class, as has been made to be a Singleton Class which means that you can use it's functionality to compare two objects whether they collide by using either AABB (box collision) or Circle collision check, without the need of instantiating the class.
That being said, creation of this framework and later on a game within wasn't free of problems. Particularly encountered many in regard of memory leaking, as was first time that I’ve used extensively raw pointers which can become troublesome if not cleared correctly when not being used anymore. After some time of debugging and tracing creation of every troublesome pointer I did manage to get rid of those mistakes, giving me yet again even more experience in debugging and using pointers/memory addresses.
OpenGL rendering application, that allows .obj models to be loaded in, accompanied with .bmp texture loading for the models. Allows user to freely move around the scene or move the tank, depending on which camera mode you are using (free camera, camera from behind the tank). Application has been written by using OpenGL's core-profile therefore allowing programmable pipeline approach opposed to fixed-pipeline, which gives much more flexibility as allows Shaders to be written for each segment of the graphics pipeline (vertex, pixel, tessellation etc...). Application utilises GLEW library to create bindings for OpenGL with drivers to provide most recent supported version, as well as GLM Library for maths related structures such as Matrices so that they're memory aligned, and lastly FreeGLUT library for means of easily creating and managing windows.GitHub Repository
Application being essentially first touch in writing Graphics Application using straight OpenGL code, was definitely not an easy journey but extremely rewarding in the end as I got to learn so many new things and concepts. Starting with understanding concepts of all graphics pipeline stages that happen during runtime, understanding and using various matrices such as world, view or projection. Learning plenty of new data structures like linked lists, binary trees and scene graphs. Ending on writing parsers to be able to load in .obj models and .bmp textures.
Application comes with custom
- .OBJ Model Loader
- .BMP Texture Loader
- Phong Lighting Shader
- Scene Graph
- Linked List Data Structure
- Camera Class
Most noticeable difficulty gave me writing parsers, and in particular .bmp parser. This would be because of it being really strict on reading correctly and assigning data from header of the .bmp image to local variables within my c++ code, where all of the variables needed to be correct to the very byte size expected from .bmp specification as otherwise read data wouldn't be fitted in according variables resulting in corrupted image. Another matter being that by default c++ compiler creates padding around variables for the safety, but that needed to be changed in case of reading .bmp file as memory would get mis-aligned.
#pragma pack(push, 1)