SacrifumbleThe last course this semester I have not yet talked about is "game projects". In this course we get put in groups of 4-5 people split in to artists and programmers and are given the task of developing a small party game over the course of the semester. This course is meant to teach us teamworking skills and everything that comes with the process of developing a game with a team. We are learning to use source control platforms like perforce and distribute tasks in hack & plan. Apart from this though, the other piece of software we have to learn is the engine we are working in. At the start of the semester we were given the choice between Unity and UE4 as the engine we would be developing our game in. I opted to use Unity but since the rest of my team preferred Unreal and I wasn't gonna try and hold back the team by bitching about it we chose to go with the Unreal Engine in the end. The learning curve has been steep especially for the programmers since we have never properly worked in either engine for programming tasks. Luckily we didn't have to start off with the C++ scripts while this would probably be the better way to harness all the skills we already have in the language but since we had to start from absolute 0 with UE4 we chose to go with blueprints to make learning more gradual (gotta be able to walk before you start running). The first few weeks we spent a lot of time looking up tutorials, reading through forums and doing whatever we can to match our skills up with that of the artists as fast and as good as we could. Right now I already feel very comfortable using the UE4 engine, I obviously can't speak for my colleague but his work has been really good so I have no doubt in my mind we grew a lot. Our game is called Sacrifumble its a 2.5D platformer set in an ancient Aztec aesthetic. Players control little priests that are trying to climb a tower as fast as possible to be the first one to make an offer to a god on to. But one of the players is controlling a demon that will do everything in it's power to prevent this from happening. The demon or "overlord" character can activate traps or rotate pieces of the tower to reveal other sections with new obstacles for the priests to tackle. If the overlord manages to kill one of the priest he is freed and he now controls the priest he just killed to have a chance himself at making the first offer on top of the tower. The other player that just died has now become the overlord and it is now their task to try and kill another priest to again switch places. Despite the rather rough development cycle so far I am really happy with the progress we are making so far and so are our teacher who give us weekly feedback on both our game and the state of our teamwork. But I am still kind of sad I now don't really have the time to put the same effort into learning Unity since I believe that this is something ill have to be able to do before my studies are done, ill probably spend time on it during the holiday after this year.
0 Comments
4th semester...Updates every week I thought when I wrote the last post, well that was until 4th semester hit in and its first 3 weeks completely overwhelmed me with how much different and more intensive they are compared to the past 3 semesters. For the better though, We have finally stopped spending most of our time on 3D and art stuff (ahum 3rd semester ahum) and now 4 out of my 5 courses are devoted to programming.
But with this came a lot more work. Since programming teachers arn't exactly the types that tell you what to do or how things work. I find myself figuring out a lot of stuff by myself on top of studying the theory of both programming and graphics programming. Even though this is not required since there will be no theoretical exams but I do it out of interest and because my plan at the moment is to go do a master in Computer Science after this bachelor. Side effect of this is ofcourse that I have less time to finish all my weekly assignments. I found myself severely falling behind at the end of the 2nd week so during the 3rd week the alarm went off when every assignment built further on the last one. So I kicked things in overdrive and finished almost 2 weeks worth of assignments in 1. I'm glad i'm all caught up now. Programming: The course programming 4 is different from the previous 3 in that it doesn't really teach the language C++ anymore or things like SQL, unit testing, etc. It teaches the icing on the cake so to speak, that stuff should be known and trained by now. We learn handy things to use that C++ for focused on game development. Things like memory allocation, cache optimization and software design patterns have been visited these past weeks. So far I have a pretty good grasp of the theory behind all these things and even though I was a little slow my assignments like for example my stack allocator have passed the necessary unit tests. Our teacher keeps mentioning and recommending books like "effective modern C++" by Scott Meyers and "Game Programming patterns" by Bob Nystrom which I now want to read all about (My copy of the first one is already on its way) but I hope I can make the time for it cause I don't trust myself. The eventual end goal of this course will be to write a game engine to play Pacman but fully optimized and utilizing many of the desing patterns we see in class. Graphics Programming: This is the big one this semester, 9 study points spanning 6 hrs of classes a week it is obviously the class is find myself spending the most time on, so far we have been doing a lot of hlsl work. Writing pixel shaders for things like cube- normal- and opacity mapping, Phong specular lighting and fresnel falloff also geometry shader work from spikes to sprite and text rendering. To pass this course we will have to write our own geometry shader that does something interesting (exampels have ranged from furr to coral reef generation. Aswell as write a game in our schools engine. Gameplay Programming: This is a rather small course, currently focusing on the likes of AI in games. We are now doing steering behavior and by next week I have to add obstacle avoidance to my boids. But I am planning on doing a little more than just that this weekend since this course hasn't really gotten my full attention yet. Its a small course on the 2 hrs of a Monday filled with 8 hrs of classes where most of the things we do are shown in class so I just try to follow along with the teachers typing since my brain isn't really worth a lot anymore at that point. This course needs a proper theory study and a reviewing and redoing of some of the code and exercises from me to get a good grasp of it. I don't want to fall behind when we start implementing A* 3D for games 2: Rigging is boring, 3ds max is hell, fuck this course. Bucher knifeExam assignment for 3D for games 1: make a game ready asset of a melee weapon of your own choice.
To be honest I didn't enjoy this. Apart from making materials in substance designer I sat through this with the thought "just pass so you don't have to redo it". In the end I got roasted by everyone I asked for feedback but I passed. Most of the criticisms I got were on the roughness on the blade. I tried to go for some fat stains since the knife is used for cutting meat but apparently that didn't really work. All that being said the one thing I did enjoy was making the materials in substance designer, guess I just really like node based art stuff. I will probably never really use Ps again for my texturing, substance stole my heart. DM-hydrolicI made this level in the Unreal Tournament editor which obviously makes use of UE4. I spent quite some time learning how to construct the flow of the level for good gameplay, since I am a huge FPS fan myself this was a joy from start to finish. visually I went for an abandoned futuristic hydrolic powerplant, using around a dozen props and material shaders I made in the engine. I'd love to come back to it and change the lighting up a bit to make the contrast between light and dark a little less on the nose and iron out some materials that I had to rush. Having said that though I did enjoy material shaders in UE4 a lot and I'm eager to try some more interesting things with them. Like this screen I made with some vertex manipulation to give it a 3D effect. these are some of the final screenshots from the finished thing (you can also see these in the video)
Level editingLevel editing has been a course I have been looking forward to for a while. I am a big FPS fan myself and whenever I play matches the level structure and flow has been something that has gripped my interest for years.
So I was thrilled to find out we were going to design a level for an fps FFA deathmatch. Getting to design the block out has obviously been the best part of it so far. Thinking about how the player flows through the environment. The use of high ground-low ground and utilizing the different mechanics like wall rides and jump pads to create interesting traversal objects is a joy to work on. The second part of the course is decorating and lighting the level which is fun but i prefer the design part a bit more. My level is called "Hydrolic" it is a sci-fi hydrolic powerplanned that has been heavely damaged and abandoned after a fight. I know it is box shaped and this is not ideal for the flow of a level I was actually really happy with the flow and got some pretty good feedback on it. I had some ideas to make the shape more interesting while still retaining the good flow but I simply didn't have the time since the decoration and material part of the course was starting and I needed to go on with that. I might try to make my ideas reality anyway if I find time for it during the holiday. 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 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) ![]()
HyperX cloud alpha 3rd Semester is upon me and with it came more 3D. This time other than low poly basics we learned high poly modeling using turbo smooth, normal map baking and then enriching and applying it to a low poly object. Followed by importing and presenting (mostly lighting and FOV) it in a game engine.
For the mid term milestone assignment I decided to make the HyperX cloud alpha headset. You can check out the high and low poly model on sketchfab (button below). Some of the assets: 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. Venice sceneInspired by half-life 2 and many other old school games I made a Venetian city scene using nothing but 3ds Max and photoshop. No PBR no fancy normal maps just good old diffuse textures on models. Quite fun to do actually. |
AuthorFlorian Gaeremynck Archive
June 2019
Categories
All
|