Week 4 Tuesday 2018-04-24
Medium-high again. We're happy that we're on track with our milestones. Patrick (me) and Tim did a gane jam this weekend (See the Ludum Dare Corner) so we may be a bit fatigued this week. Nick has had a fever for a few days. Get well soon! And I hope the rest of us don't get sick...
My goals were to implement model loading and diffuse texturing and integrate these features with the client-server architecture.
I was able to not only get my goals for the week complete, but I was also able to go and add a bunch of documentation to all the classes and functions I’ve been working on.
There were a few complications that could have caused problems for this weeks goals. First, I forgot that Assimp doesn’t handle texture loading itself, so I had to find a library for that (in this case, DirectXTex). Second, we had issues with .fbx files not being loaded, so we had to switch to .obj files, which worked much better.
Next week, I’m planning to start work on gameplay programming and adding more graphics features to support the gameplay. I’m not sure yet what specifically I’m going to work on, so I’ll need to talk with the team to figure out what we need to meet our goals this week.
This week, I learned a bit about the DirectXTex library, as well as some random stuff about networking.
Surprisingly, things are about on schedule, so I’m satisfied for the time being.
This week I wanted to implement the 3D sound tutorial and link the sound to an event/input.
I was able to complete the 3D sound tutorial. It requires a switch from stereo to mono sounds and I had a little bit of trouble changing the sampling rate and number of channels with audacity. I also had to veer from the tutorial just a little bit because I had changed some things about the original sound tutorial code.
Yes, I did not finish linking the sound to play upon receiving an input or event. This is because I wasn't sure how event is being sent. We are in the midst of discussing what would be the best package to send from server to client and client to server. I also have another class' assignment due this weekend that I needed to work on.
Next week, I would like to possibly help with the networking with the sending and receiving of packages so that I can link the sounds to events/input. I am not sure what our next step will be after but will be able to take on more tasks.
I learned a bit about audacity and basic components of sound files. I kept breaking the game with mis-formatted sound files and am now very conscious about what format the game's sound files need to be in.
I'm feeling a little lost about the packages in networking so I will touch base with the team on that. From these past three weeks, I noticed the team likes to work hard on the game and take breaks to attend to other things on weekends. I personally like this schedule.
Bullet documentation is weird, so getting it set up proved tricky.
Finish up integrating bullet3 physics, and then getting some gameplay functionality in.
I'm happy because things are on track! However, I found myself at a loss of what to do once the client-server integration was complete.
Get client-server integration working
N/A
Wherever I'm needed - figure out client-only logic like animations and sounds, or player-vehicle collision detection, or wherever else.
When architecting large software, the "correct" design decisions are not obvious!
High! We met our milestone for the end of week 3. But I'm also fatigued from doing Ludum Dare the past 3 days.
Get a working model of the block and turret in.
Got a block with texture in the game, but I’ll need to modify the texture more. The turret has some work done, but is not ready to export.
Getting the turret completed and in, some other classes took up a bit of time this week so I didn’t get around to texturing it (as that requires more finalizing the model and unwrapping it). Assimp was also having issues loading our FBX models, but that was a relatively quick change.
Finish up the turret module, then get the core block and driving module designed, then work on terrain textures if I have extra time.
Assimp’s loading of FBX models doesn’t appear to work well for us, so I think we’re switching to OBJs files so we had to include them to our github repo (though most will be put in drive instead so they don’t go through versioning if they’re large).
Pretty good. We’re getting things implemented really quickly. I hope I’ll be able to pump out models as fast as our team needs them. Worse case, I’ll just give them some temporary placeholders and clean up models later.
Integrate the graphics client with the networked client/server branch.
The client is fully integrated with the server on the graphics side. The server passes the world space matrix and which model to use over to the client to render. I also implemented a Transform class similar to the one in Unity which allows you to modify both the local and world space coordinates, and they will update each other accordingly.
The goal was completed easily as I had finished the graphics data serialization last weekend, so all I had to do was send it over the network.
We will be starting the game logic coding, and I will probably work on the camera portion to begin with.
I learned how to convert world space matrices to local space (or I guess parent space would be the way to put it?) But now that we have a real transform class, programming behaviours in our components should be easier.
I am more confident in our engine, but I highly doubt we will get basic gameplay working by next week without physics implemented yet, but we should be able to get basic player control working.
I made a game for ludum dare, an online game jam. You can download it here. https://ldjam.com/events/ludum-dare/41/space-skirmish. The theme was to combine 2 incompatible genres, so I decided to combine bullet hell and real time strategy. I am fairly happy with what I was able to complete. I got a decent amount of gameplay features done, and the simple 3D models I made turned out decent enough. But the game balance is questionable at best. I also got the chance to tinker around with some music in LMMS, I should probably learn how to use it so I no longer have to use someone else’s project as a baseline and then modify chords and rhythms slightly.
I worked with an artist (online friend) and sound designer (UCSD student) and I did the programming in Gamemaker. Our game is a Twin Stick Shooter + City Builder which you can play here. I had a lot of fun and I am so so so tired.