A Flarwmer? Well, the first step in combining our enemies was the movement, and as a result, the flier now has capable, perpendicular-to-player scurrying that is split with flying into the air. A couple of the code pieces in the enemy kept it stuck in place, like being stuck in the ground and the scattershot not being set to null as a reference. The latter is easily fixed, but the former required a slight vertical jolt to get it out of the ground.
Now we just need to give the enemy the attacks (and model, and animation) it deserves.
As for the homework, I had to go back on my action's weakness (a parsed action without any data should not be updated, but is a problem run into MUCH more frequently than an exception), so it's a simple skip for now. The Reaction tests well, and I can relax.
Well, until the neurofeedback presentation. The main complaint was the frame rate, which I could say is my fault but... nah. It's the vector grid we're borrowing, so I reduced the amount of vector edges being created on the fly and we've already got a massive improvement in frame rate:
What's next? Relaxation? Someday?
An account of pain, struggle, and amusing discoveries found in a man's quest for game programming style and finesse.
Thursday, April 7, 2016
Wednesday, April 6, 2016
Day 88: Too Little Time
I'm short on time, so I'll be fairly quick.
Capstone! The combination of enemy designs into a single whole has begun, so I've begun establishing ground movement for the flier. Unfortunately, the AI behavior trees in Unreal are now...wonky. It's establishing a strange zig-zag movement ever since I replaced the blackboard, with no explanation to its behavior after restarting the components. So, I defaulted to the original flier movement, which fit more of its style.
As for the homework, I think I've gotten a fair enough implementation in of Reaction objects to start testing, including an extra data storage for Reactions (since there was no specification on where to attach the ReactionAttributed object). We've got much less time to finish this one (due Friday), especially with the showcasing of the neurofeedback project tomorrow. Time to test!
Capstone! The combination of enemy designs into a single whole has begun, so I've begun establishing ground movement for the flier. Unfortunately, the AI behavior trees in Unreal are now...wonky. It's establishing a strange zig-zag movement ever since I replaced the blackboard, with no explanation to its behavior after restarting the components. So, I defaulted to the original flier movement, which fit more of its style.
As for the homework, I think I've gotten a fair enough implementation in of Reaction objects to start testing, including an extra data storage for Reactions (since there was no specification on where to attach the ReactionAttributed object). We've got much less time to finish this one (due Friday), especially with the showcasing of the neurofeedback project tomorrow. Time to test!
Tuesday, April 5, 2016
Day 87: For Every Action There is A...
Reaction. Yup. Seems as if the Event system we were working on is definitely going to be followed up with an action to be utilized through an event interface. Multiple inheritance? You bet! Still in the function prototype phase, though.
As for showable work? I made a decent attempt on the loading screen for our game (since it takes awhile to load assets, pre-multi-section loading and all) but detecting streaming level loading is a bit tricky. I've set it so far so that the LevelLoader checks the streaming level loading, but it reinstates the load screen (forever) somehow, so I've let go for now.
As for Game Lab? The explosion works! And rotation! Woop! The problem came from the singular cubes in the main obstacle structure having their own rigidbodies, meaning that they did not spin with the main structure. Voila!
I'm also starting to get back into graphics programming (Thank the lawd) since some advanced lighting topics in OpenGL were updated. That does mean I have to learn everything from the ground up though. I wish things like VAO, VBO, and EBO were communicable across multiple graphics APIs, but these things are so specific.
As for showable work? I made a decent attempt on the loading screen for our game (since it takes awhile to load assets, pre-multi-section loading and all) but detecting streaming level loading is a bit tricky. I've set it so far so that the LevelLoader checks the streaming level loading, but it reinstates the load screen (forever) somehow, so I've let go for now.
As for Game Lab? The explosion works! And rotation! Woop! The problem came from the singular cubes in the main obstacle structure having their own rigidbodies, meaning that they did not spin with the main structure. Voila!
I'm also starting to get back into graphics programming (Thank the lawd) since some advanced lighting topics in OpenGL were updated. That does mean I have to learn everything from the ground up though. I wish things like VAO, VBO, and EBO were communicable across multiple graphics APIs, but these things are so specific.
Monday, April 4, 2016
Day 86: Too Late For Pictures
Today was a little day in terms of capstone and other such work, but I did get a big thing done!
Said big thing was the resume; it had been something that I hoped I would save until I was ready (i.e. done with this semester), but there's already plenty that I could put on my resume before then.
That said, there is MUCH I have to catch up with regarding advanced lighting and shading that would benefit me in the long run. The previous site that I used to learn OpenGL shading (here) got a lot of updates, primarily in the advanced lighting category. Shadow mapping, point shadows, HDR, bloom, screen-space ambient occlusion, and deferred lighting. So many goodies that I had to pass up on because they weren't available yet now are! It's quite exciting.
As for capstone work, I used smooth interpolation to fix a bug where the time dilation ability would produce a time skip as things that ignored the time skip had to lose a few frames to accommodate the change.
But I'm still excited for the extra shading stuff!
Said big thing was the resume; it had been something that I hoped I would save until I was ready (i.e. done with this semester), but there's already plenty that I could put on my resume before then.
That said, there is MUCH I have to catch up with regarding advanced lighting and shading that would benefit me in the long run. The previous site that I used to learn OpenGL shading (here) got a lot of updates, primarily in the advanced lighting category. Shadow mapping, point shadows, HDR, bloom, screen-space ambient occlusion, and deferred lighting. So many goodies that I had to pass up on because they weren't available yet now are! It's quite exciting.
As for capstone work, I used smooth interpolation to fix a bug where the time dilation ability would produce a time skip as things that ignored the time skip had to lose a few frames to accommodate the change.
But I'm still excited for the extra shading stuff!
Sunday, April 3, 2016
Day 85: Special Event
Today was a particularly well-done Sunday afternoon in terms of workload! As for capstone, I helped with the necessary changes to the central-focused nodes, in which their activation was an automatic, timed powerup from calcified to decalcified:
As for content fixing, I found out I can test loading for materials and textures. Time to delete!
I also finished up with the event homework. Thank goodness we were allowed to use shared pointers! Those structures really help with preventing memory leaks. I just had to be sure to maintain the memory state before and after test methods, with the static event subscription methods and all.
As for content fixing, I found out I can test loading for materials and textures. Time to delete!
I also finished up with the event homework. Thank goodness we were allowed to use shared pointers! Those structures really help with preventing memory leaks. I just had to be sure to maintain the memory state before and after test methods, with the static event subscription methods and all.
Saturday, April 2, 2016
Day 84: The Most Average Thing Possible
Woo! Seems like the WeightedAverager tool is ready to go! What this tool does is that it operates in taking the averages from each local computer's playtesting session and weights their averages into a full average if the files are in the same folder.
This requires that the csv averages are renamed before adding to the folder (have to be different names), but fully reads all .csv files and performs the proper parsing and averaging. I did have to rewrite a lot of the parsing for Timespan structures since that doesn't exist outside of UE4's FTimespan, but I managed it! We should be good for managing averages statistics of an entire play session.
As for homework? I found out that during our run-time type identification scripts that we attach to derived objects, templated objects may have the improper (i.e. too generic) typename. For example, Event<Bar> may have the type name of "Event", but the ID remains the same. Scandalous! Luckily I got the ok from the professor that that (design issue) caveat is acknowledged and permissible.
What's next? That was the big thing keeping me from understanding Event, but I'll be able to start testing as soon as tomorrow! Good news indeed!
This requires that the csv averages are renamed before adding to the folder (have to be different names), but fully reads all .csv files and performs the proper parsing and averaging. I did have to rewrite a lot of the parsing for Timespan structures since that doesn't exist outside of UE4's FTimespan, but I managed it! We should be good for managing averages statistics of an entire play session.
As for homework? I found out that during our run-time type identification scripts that we attach to derived objects, templated objects may have the improper (i.e. too generic) typename. For example, Event<Bar> may have the type name of "Event", but the ID remains the same. Scandalous! Luckily I got the ok from the professor that that (design issue) caveat is acknowledged and permissible.
What's next? That was the big thing keeping me from understanding Event, but I'll be able to start testing as soon as tomorrow! Good news indeed!
Friday, April 1, 2016
Day 83: Weighing my Average Chances
Today was both a day where it felt like work was getting done and was yet to come! In the neurofeedback project, we finally got collision from one of my coworkers! Which meant we can now attach a particle effect and emit the required amount of particles per collision.
As for the capstone project today, we had another session of internal playtesting. Looks as if the game crashes if anything persistent (see: the main character) has a reference to an actor that is being unloaded. Solution? Use the unloader and reset references to null when loading another level. I have also been working on a weighting average tool outside of Unreal; it's much harder when reading all the files in a folder and managing between TCHAR and regular char.
Bomb drop? You bet. Unfortunately, the project assignment was announced waaaay too late in the day, so I've got to work on it soon!
As for the capstone project today, we had another session of internal playtesting. Looks as if the game crashes if anything persistent (see: the main character) has a reference to an actor that is being unloaded. Solution? Use the unloader and reset references to null when loading another level. I have also been working on a weighting average tool outside of Unreal; it's much harder when reading all the files in a folder and managing between TCHAR and regular char.
Bomb drop? You bet. Unfortunately, the project assignment was announced waaaay too late in the day, so I've got to work on it soon!
Subscribe to:
Posts (Atom)