Graphics ProgrammingArguably the most important/scary/exiting new course in second year has been graphics programming. But even though the subject matter is hard and goes really fast and sometimes got me doubting my life decisions. I ultimately enjoy this course to the fullest. It is incredibly fascinating to learn how in the world computers are able to render out 3D imagery so fast and I can't wait for the next class. We started from scratch learning the rendering pipeline and build up our knowledge from there using among other things the book "3D Game Programming with DirectX 11" by Frank D.Luna. This thing basically turned in to our bible of graphics programming and all the theory can be found in there. But the most important part is of course the practice, being able to apply that theory. We use The DirectX API (Microsoft) and each week we learn how to render out more and more exiting things like for example: Shapes Textured Meshes Light Saber
0 Comments
Assembly Robot I have written a simple AI in a simulated assembly environment. The environment contained a small level with objects, a robot to navigate around in said level and a simulated computer with 256 bytes of memory and no registers. With these limited resources I wrote a behavior for my robot using assembly code and some commands the environment provided for specific actions. In the end the robot has one final flaw that I haven't been able to deal with and that seems to be a bug in the framework. To explain: I found out when I was comparing the type of the object the robot scanned to the top priority type: assembly code: ;battery PUSH8 type ;push int variable "type" to the stack PUSH8 #8 ;push an integer 8 to the stack if_eq8 ;compare both jnz cmpbatterypriority ;if the comparisant checks out jump to the function "cmpbatterypriority" In this example the type was equal to #2 and while 0x00 was pushed to the stack to indicate the comparison had failed, the program still jumped to "cmpbatterypriority" and never removed the the 0x00 from the stack not only causing my robot to not behave like it should but also stack overflow since the 0x00 is not popped off the stack. This is my robot code in a text file (I called it Rigel, I like naming things after stars) ![]()
Disney's AladdinI made a level from the Sega Genisis game Aladdin pretty much from scratch using nothing but C++ and a small openGL framework that. Being one of my first big C++ only projects the quality of code evolved noticeably over the time I spent on it. Things I have learned making the game and building systems in to the framework include for example: - collision detection with raycasting and hitbox objects - basic behaviour loops for enemy AI - making interaction objects like platforms, ropes etc. - sprite animation - camera movement - working object oriented in C++ - UI Some things I would like to do better in following projects:
- making movement matrix based - adding a managers for projectiles and enemies UPDATE: one year later I expanded on this knowledge in my own pac-man engine. |
AuthorFlorian Gaeremynck Archive
June 2019
Categories
All
|