Saturday, October 29, 2011
Trade Show & It's all over!
Project has finally come to an end, and after an awesome Trade Show in which we jointly won the Best Project at the Trade Show 2011, it's all over! We're very happy with what we produced, which met all our initial expectations and all went to plan. We've all learned a lot in the process, in the fields of coding, game design, teamwork, organisational skills and computer science project development cycles.
Tuesday, October 25, 2011
That's Just... Low!
COM/AI reaches an all-time high (correctly using moves corresponding to your hitbox including knocked down) and an all-time low (kicking you while you're down) in the same revision.
Move ranges, effects, polish
More stuff tonight... a slow-down effect when you KO the other player, some small bugfixes, some small improvements to the game and to the animation, another small piece of music, and "Move Hit Ranges". Now instead of a move having only a set instant where it "hits" and if it isn't it range then the move is discarded, moves have a time window where the move can potentially hit. This was made for, especially, Takeshi's flying kick where any time he is flying in the air is a potential hit, not just one particular moment in the air.
Polish-wise, I've just implemented various all-around improvements like removing the "Round 1" announcement from training mode, not allowing you to choose AI for story mode, and that sort of thing.
I've also tinkered with the AI/COM and am glad to say it plays a lot better now. It's more fun to watch and makes for more exciting demos. I did discover one bug which made it impossible for AI/COMs to do crouching moves (even though there are only two.) The subsequent fixing of this bug and a few other bugs which affected blocking, introduced by the new HitBox type "Lowest" (which can also hit downed fighters, unlike "Low",) and a bit of tweaking, was vital to this improvement.
Moves such as Takeshi's flying kick didn't have a specific instant of time that the move connected. |
I've also tinkered with the AI/COM and am glad to say it plays a lot better now. It's more fun to watch and makes for more exciting demos. I did discover one bug which made it impossible for AI/COMs to do crouching moves (even though there are only two.) The subsequent fixing of this bug and a few other bugs which affected blocking, introduced by the new HitBox type "Lowest" (which can also hit downed fighters, unlike "Low",) and a bit of tweaking, was vital to this improvement.
Monday, October 24, 2011
Final touches.
I'm glad to say that this week, in the coming days before the trade show, we have only the final touches to put on Project Sensei-now I'm doing nice things like making the demo mode loop, making additional sound effects and polishing up some of the graphics, making small changes to how the game looks--just details here and there. Probably some time tonight I'll start working a bit more on polishing the AI/COM behaviour, as it just needs a little tweaking to give a more exciting and natural performance for demonstration purposes.
Friday, October 21, 2011
Interfaces, menus, physics fixes, polish
Last night for about 4 hours I worked on completing the menus, in particular the in-game pause menu which needed a new submenu "COM Customisation". I also added varies elements to the existing UI to polish it. For example, the credits screen now says (B) Back in the corner, and blank black backgrounds in two of the screens have been replaced with a dark grey scrolling plasma pattern.
This morning I did a few major fixes to a couple of small bugs in the event manager related to physics. One such bug was that move-related inertia was being inverted entirely where only the X component of the 2D vector should have been inverted. Another bug was using the inertia value before clamping it, resulting in the full inertia for one frame then the clamped inertia from then on (imagine teleportation.) This bug was only noticeable with move inertia significantly greater than the clamping threshold (10).
Now we can do proper flying punches and kicks in our combos without teleporting.
This morning I did a few major fixes to a couple of small bugs in the event manager related to physics. One such bug was that move-related inertia was being inverted entirely where only the X component of the 2D vector should have been inverted. Another bug was using the inertia value before clamping it, resulting in the full inertia for one frame then the clamped inertia from then on (imagine teleportation.) This bug was only noticeable with move inertia significantly greater than the clamping threshold (10).
Now we can do proper flying punches and kicks in our combos without teleporting.
Thursday, October 20, 2011
OneClick Installation
After about an hours worth of debugging and getting this OneClick installation to gather all the right dependencies and figure out why it wanted to load things that didn't exist (but once did) and forget to create some folders (guess since there was nothing in there...) I finally have a working Windows Binary installer setup binary for Sensei. This is a good milestone.
Wednesday, October 19, 2011
More polish work
Tonight in the last hour I've put together the new in-game paused menu with a brand new volume slider bar. I've also touched up some of the intro screens and I plan to polish up a few of the other UI screens now.
Project Polishing
All yesterday and all morning today I've been busy working on polishing up Sensei. Knocking off things on the TODO list is our group's hobby right now, and last night I did a few more UI elements, shaded Takeshi and Catalina and gave them their final look, did some bugfixing with the guys and today I'm finalising the Technical Manual.
Monday, October 17, 2011
Tons of AI/COM/DecisionSystem work
All this afternoon I've been working on AI/COM/DecisionSystem stuff (except for a few bugfixes here and there, some small changes I required to do certain things, improving a little bit here and there, and debugging) -- I improved the degree to which the DecisionSystem responded to the personality traits--and refined blocking and countering tactics to ensure I had full control over when and where it was happening (counter attacks were happing by chance before, more than they should have.)
AI now has "rage" training which is an informal term for the ability to learn and morph its states based on its experience as a fighter. At learning speed l = 0.1, which is quite fast, after 3-5 minutes the trainee has the mindset of a champion-- it's ready to lunge at the opponent and attempt counter attacks where appropriate. The personality traits that make up this mindset are static for different COM difficulties. So, a beginner level COM will jump around and wander aimlessly sometimes, unsure or perhaps a little afraid to approach the opponent. A normal-level COM will get into it but give an average performance.
Training now saves and loads AI brain modules in their full capacity and in that regard is functionally complete. I can now train real AI save files through the game.
Another big hurdle I got through tonight was combos. I implemented, for both COM and AI, a combo limiting function which applies a threshold on the variety of moves in the moveset they will use, and how often. In this regard, an AI or COM with very high competence in combo moves will almost always use combination moves (like a human that has memorised the combinations AXY, ABB, AAX, etc.) Conversely, those with low competence will never use combination moves, and thus cannot practically learn them until they are more adept. This brings a slightly cool side-effect that you can't teach the best moves to a newbie trainee since they will not understand it.
AI now has "rage" training which is an informal term for the ability to learn and morph its states based on its experience as a fighter. At learning speed l = 0.1, which is quite fast, after 3-5 minutes the trainee has the mindset of a champion-- it's ready to lunge at the opponent and attempt counter attacks where appropriate. The personality traits that make up this mindset are static for different COM difficulties. So, a beginner level COM will jump around and wander aimlessly sometimes, unsure or perhaps a little afraid to approach the opponent. A normal-level COM will get into it but give an average performance.
Training now saves and loads AI brain modules in their full capacity and in that regard is functionally complete. I can now train real AI save files through the game.
Another big hurdle I got through tonight was combos. I implemented, for both COM and AI, a combo limiting function which applies a threshold on the variety of moves in the moveset they will use, and how often. In this regard, an AI or COM with very high competence in combo moves will almost always use combination moves (like a human that has memorised the combinations AXY, ABB, AAX, etc.) Conversely, those with low competence will never use combination moves, and thus cannot practically learn them until they are more adept. This brings a slightly cool side-effect that you can't teach the best moves to a newbie trainee since they will not understand it.
Sunday, October 16, 2011
AI stuff
During the Skype work session tonight I got a lot done on the AI and it has blocking and countering fully implemented, learning and improving. At the moment our default learning speed is pretty high as in a few rounds it can master blocking (100%.) But it's good for testing.
We now have an AI visual interface to measure the training and observe the AI. I may make a second interface to show the inner workings of the AI's thoughts since this is basically just to aid training the AI.
We now have an AI visual interface to measure the training and observe the AI. I may make a second interface to show the inner workings of the AI's thoughts since this is basically just to aid training the AI.
Saturday, October 15, 2011
More stuff!
More work on the computer-controlled characters. Their behaviour should be highly tweakable now and they can put up a good fight when they want to. Also, I've made the counter-move special effect so it's highly noticeable.
DecisionSystem/COM
Now I'm working on the DecisionSystem and COM code. I've implemented counters so that can be done. Right now I'm going through and filling in small gaps in the decision tree but the main thing I'm doing is getting everything to use the Personality variables. So, blocking will be less successful if the personality has mercy and they are winning by a fair bit. It's almost all "fuzzy logic" so the end result is a more natural behaviour. The main thing I have to implement personality for is so that the different difficulties of COM actually differ in behaviour. In that regard I believe I'm successful so far. Expert COM is just about impossible to beat, even though it doesn't use the debug move that kills you instantly any more. For now the COMs don't do combos because of the way the move sets are being played with at the moment (by the fighting engine guys) so they only do basic attacks. But when that's sorted out they'll being doing combos and all that.
Friday, October 14, 2011
Voice Acting
Today we did the official voice acting session for Sensei. This included Takeshi (played by me), Ivanov (played by Vince) and Catalina (played by a friend) grunts and groans, good times and laughs were had by all. I also did the announcer's voice.
Outtakes :P
We had the whole group there so in total there were 5 people... 1 person voice acting with 4 people trying to stifle bursts of laughter (at least in the beginning) ... Haha.
Thursday, October 13, 2011
Character Selection Screen improvements
The new and improved Character Selection Screen has fewer controls down the bottom to confuse people with. Start is no longer required to begin the game in Quick Fight, it starts when both characters are chosen. I also put in coloured dots and a colour overlay with the selectors to make it more obvious which one you were choosing.
AI/COM linkage
This morning I've been working on linking up the AI and COM stuff to actually be useful in the game. There is a "stock" default AI in there called Punchbag which has a learning speed of 0 and knows nothing. We can use this AI to beat up like a punching bag and it will never retaliate.
New AIs can now be created from inside the game and used. They will learn in Training mode but not in Quick Fight (that's just a fight, not a learning session.) COM difficulty goes from Beginner to Expert and actually sets the COM's personality. That isn't extensively used in the code yet so the appearance is minimal for now, but the values are there as actual personality structured information instead of quickly hacked debug ones.
I am going to do more AI/COM work when I get a big block of time to work on it. I don't want to sort of start to get into it then have to rush off since I want to focus on it so that I can get things working properly and effectively. It's not a quick 10 minute job to add new features to the AI like it is for UI, so for the rest of this morning, the next few hours, I'll be doing odds and ends to get the game's polish up.
New AIs can now be created from inside the game and used. They will learn in Training mode but not in Quick Fight (that's just a fight, not a learning session.) COM difficulty goes from Beginner to Expert and actually sets the COM's personality. That isn't extensively used in the code yet so the appearance is minimal for now, but the values are there as actual personality structured information instead of quickly hacked debug ones.
I am going to do more AI/COM work when I get a big block of time to work on it. I don't want to sort of start to get into it then have to rush off since I want to focus on it so that I can get things working properly and effectively. It's not a quick 10 minute job to add new features to the AI like it is for UI, so for the rest of this morning, the next few hours, I'll be doing odds and ends to get the game's polish up.
Wednesday, October 12, 2011
AI management
This morning I've been working on getting AI saving and loading, and integrating AI creation, selection and deletion from the Character Select screen.
The AI Brain creation screen. Only one player may create an AI at a time. Very simple for now, I might just put some psychedelic background and we're all done really.
Two players may select or delete AIs simultaneously.
Tuesday, October 11, 2011
More stuffs
I made a proper credits screen which looks really good now, fixed up a few things in UI, made some improvements to the effects in game, and tweaked a few things here and there.
High priority items on TODO list remaining:
AI Saving/Loading functionality
All UI graphics complete
AI readout display
Final Colour/Shade character sprites
And a lot of medium priority things.
Then if I finish that I can just polish (week 13 probably.)
High priority items on TODO list remaining:
AI Saving/Loading functionality
All UI graphics complete
AI readout display
Final Colour/Shade character sprites
And a lot of medium priority things.
Then if I finish that I can just polish (week 13 probably.)
Monday, October 10, 2011
Blooper Reel #2
Sunday, October 9, 2011
COM packs a punch
Okay so I just linked up the COM with the default DecisionSystem processor since we only had a stub COM fighter. It picks random moves for now, which is pretty dangerous since there's like a 1/8 chance it'll instant-KO you. :P
Backgrounds, music, UI
Some various changes to Sensei regarding the UI, mainly just changing the debug font to the Sensei font. In this update, the Beach stage is in there (Catalina's stage) and the theme music plays on startup. Leaves fall in the background of the Dojo stage.
Various updates
I did some small modifications to the Character Select Screen just to make it work better. I also fixed a small bug in the process. Modeller (the fighter creator/animation program) now has support for defining an action point per motion. I wrote a basic effects engine for the fighting engine, which for now creates an impact sprite whenever a hit is landed.
First Sensei music
I really had no idea what kind of themed music Sensei would have so I went for an official orchestral sound, at least for the main theme; taking inspiration from the Soul Calibur soundtrack.
It is a slow piece, meant for the splash screens and menus. The battle music will be more upbeat.
Hopefully the piece will be received well. This one took about 3 hours to compose.
It is a slow piece, meant for the splash screens and menus. The battle music will be more upbeat.
Hopefully the piece will be received well. This one took about 3 hours to compose.
Friday, October 7, 2011
Character Select Screen
Has some more proper graphics in it and some of the logic was rewritten so it should handle all cases of all combinations and permutations of players now. :I
Thursday, October 6, 2011
Minor website modification
The welcome page has some updated screenshots and the project's poster on there now:
http://jordan.trudgett.com/sensei/
http://jordan.trudgett.com/sensei/
Alternate spritesheets and new health bars
The title says it all. I've coded in/implemented alternate sprite sheet colours for the second player and the new health bars.
Final Poster Design
Background class
I've now abstracted the background (area) into its own class so each arena can handle it's specialised drawing routine, whether it be animating water, falling leaves, rain, all that cool stuff. Later on once I've drawn and done all the backgrounds then I will go and paint them properly and animate them to make them come to life.
First things first though, I am going to be implementing the proper Health bar and then work on COM/AI stuff, which is about half done (the difficult half ;)) including the AI insight/readout panel.
First things first though, I am going to be implementing the proper Health bar and then work on COM/AI stuff, which is about half done (the difficult half ;)) including the AI insight/readout panel.
Outlines, spritesheets, more work after 48
Just came back from Queensland on Monday night from the 48 Hour Game Making Challenge. We won the award "Best Graphics." I've been very busy these last couple of days just catching up on everything which is enough work as it is without taking out a massive weekend chunk out of it :P But despite that I've managed to get the other two characters' spritesheets in and wrote a function to generate outlines for the characters to draw in-game. I'll be doing more Sensei work today as well, starting with the Background class to handle the active backgrounds of each stage.
Subscribe to:
Posts (Atom)