Karai17

LD33

We’re in, GET HYPE!

We’ve been preparing our codebase for the past week: tweaking libraries, fixing bugs, etc. Now that we’re only two days away, it’s time to GET HYPE! For our jam entry, We’ll be using the following tools:

Framework: LÖVE3D (a 3D extension of the LÖVE framework)
Language: Lua
Editor: Atom
Graphics: Blender
Audio: BFXR

We will be streaming all 72 hours of development on Twitch, so check us out!

You can check out our GitHub, Twitter (@LandonManning, @shakesoda), and dev blog as well!

You can also check out our LD32 entry here.

PSA: Don’t forget to buy food!

Ludum Dare is upon us again and we will need to spend as little time away from our computers as possible to meet the deadline(s)! Don’t forget to go out and stock up on some hassle-free foodstuffs that you can pop in the microwave or the oven, drinks, etc. Some choice selections:

Foodstuffs

  • Pizza Pockets
  • Hot Pockets
  • Mac & Cheese (Kraft Dinner for us Canucks)
  • Instant Ramen
  • Bagged salads
  • Hotdogs
  • Chicken Nuggets
  • French Fries

Fluids

  • Bottled Water
  • Tea Bags
  • Instant Coffee
  • Energy Drinks
  • Fruit Juice

Stay fed and hydrated, and good luck!

Day 2 Results

View post on imgur.com

Previous Post

Day two is over! Today we prettied up the scene with some post-processing shaders and added textures to our particles. We also added an “enemy” model (the diver) that we need to rig and animate tomorrow. We got collision detection working in a lazy fashion; checking distance between collision points and radii. Simple, fast, and effective. We had some trouble with our movement so we ended up rewriting it using some real physics instead of mapping our movement directly to the gamepad. Now we apply force with a scalar and all is well. With this new physics movement, we also improved our collision ability where ramming into another object can send it flying. We still need to tweak exactly how we plan to do that, but we’re getting close to having proper gameplay mechanics!

Like our last Ludum Dare entry, we wanted this game to be voiced. We decided to take it a step further and integrate i18n support from the beginning. With this, we can cycle between translations including both text and audio. We currently have four text translations of our game and most of the English audio recorded. French and German audio should be coming tomorrow, as well as Italian, Portuguese, and Greek text translations if I can coordinate everyone.

Finally, before passing out, I managed to write a level loader so now we can load up varying levels into the same scene so no code needs to be duplicated or that junk. Woo!

Tomorrow we plan to finish the collision system and some gameplay mechanics so we can finally say we’ve made a game instead of Shark Swimulator. 😉

Good luck everyone, and good night!

Day 3 Results

View post on imgur.com

Previous Post

Day three! Ah! I was panicking for a lot of the day about whether or not we’d have anything to show for all of our hard work. We had a lot of trouble with our collision system and we kept having to move on and then come back to it only to get frustrated and move on again. We finally found the problem and it turns out I’m an idiot. But now it’s fixed and works great! We’ll definitely have a game to submit tomorrow. :)

Today we managed to do a whole lot of work. We added a couple more translations bringing our total use to seven text and two voiced. Crazy. We finally set up event listeners and implemented our audio and subtitles so now all of our translations are displayed in game. We also added win and lose conditions, though they need to be tweaked. The full “gameplay” aspect of the game is still lacking and our full focus in the final hours will be to get that working. Losing is pretty. When a lose condition is met, your game input is cut (menu input persists) and after a couple seconds the game pauses and allows you to spin your camera freely. It looks really cool. We decoupled our camera input and movement from the normal input and movement systems to allow this more free control.

@shakesoda finally created our cage model while I (@LandonManning) set up the event listeners and options menu so now the game just looks more complete and almost ready. He also significantly improved the menu scene and creates our snazzy logo. Props! Our options menu is simple but it works. You can adjust your language and volume settings. Woo! We also added a blood particle to our diver dude when the time runs out or if you eat him. Lol.

Sleep deprivation is going to kill me tomorrow. I have a job interview in seven hours and then it’s go hard until submission period. Tomorrow’s focus will be purely gameplay.

Good night!

Shark Swimulator: Post Mortem

2015-08-24_06-12-33

2015-08-22_10-34-36

I just wrote a novel blog post on my personal website discussing in detail our experience during this Ludum Dare. In short, we had a lot of fun, met some interesting challenges, and created something we felt was really cool.

If you have a few minutes to spare, please read my post, play our game, and give us some good, honest feedback. We’ll be sure to go through our comments and play your games, too! :)

LD35

End of Day 1

Alright, so over the past few days my friend @shakesoda and I (@LandonManning) have been preparing for another Daring Adventure. It turns out that basically all of our preparations were wasted, but fret not, we’ve made progress nonetheless!

As usual, we are using LOVE (Lua) to build our game. We have our own 3D code sitting on top of LOVE that works quite well. We will be using Blender for our 3D models, Audacity for any sfx or voice acting, Atom/VSCode as our text editor, and for the first time, we’re both running Linux!

To being, the boilerplate we prepared turned out to be older code than we wanted, and it caused a lot of problems. We pulled it from an old project and didn’t notice that it was totally wrong until the clock was already ticking. It took some extra time, but we finally got our systems back up and running, and a cube was being rendered. Next, we came up with a few ideas for various themes to give a bit of an edge, but we couldn’t think up anything interesting for Shapeshift. Ugh. We managed to rethink an idea we had for another theme and we actually like it. I’ll go more into it in another post, but the basis is that you’re in a rock-paper-scissors scenario, and you are always forced into the disadvantage.

Now for the positives! Even though we had a rocky start, I think we’re actually a bit ahead today. We have a fully working player controller, AABB-OBB collisions are being detected but not yet resolved (we’re having trouble figuring out how to get the hit vector/collision direction… Any help would be appreciated! Tweet me @LandonManning <3), and our basic rock-paper-scissors stuff is implemented. The screenshot below doesn’t really show much, but tomorrow we hope to have some of the art done and game mechanics implemented.

If you want to watch us dev, you can catch us on Twitch.

View post on imgur.com

End of Day 2

In my last post, I discussed that we had a lot of issues starting up, but still managed to make progress. Today we (@shakesoda and @LandonManning) made a HUGE breakthrough and got a lot of stuff working!

After dinking around with collision junk for too long, and not getting anywhere, I decided to scrap my AABB-OBB collision code entirely and switch to Circle-Circle. This happens to be fine since most of our objects are somewhat cylindrical. In our last game(s), Circle-Circle didn’t fully work out for us and was glitchy. We’ve finally perfected it and will be modularizing the code after Ludum Dare so we don’t blow hours on collision again. We’ll hopefully get other sorts of collision working better too, such as AABB-OBB and whatever else is common.

With collision finally working, I went about getting attacking enemies to work while shakesoda whipped up some more assets. With the game transforming from a cube “hitting” a cylinder to a character T-posing at a Tree, it really make it feel like we were progressing. Not long after, we even had basic animations to toy with such as a walk cycle and a sword swing. To get a better idea for how to animate running with a sword… I decided to run down my apartment building’s hallway with a katana. Luckily, it was late at night and no one called the police! We also fixed up the player and enemy stats so that they are taken into account. Low ATK makes your hits do less damage, etc.

View post on imgur.com

 

Designing the level was a bit interesting. For our last game, we wrote a level exporter for Blender that allows us to link objects into a level.blend file and then export a Lua file with object information. We decided to reuse this and I started plotting random trees all over a plane. It was pretty cool but didn’t quite feel right. Instead, I laid the trees out in a grid and made a few paths and such through them. With a proper grid, we were also able to implement… path finding!

We want monsters to be able to chase you, and to do that we need path finding. We decided to use A* (A Star) path finding. We had some troubles with the library we were using as we needed to convert between different coordinate systems but after we figured that out, it Just Worked.

View post on imgur.com

 

Finally, we wanted to add a sword swish sound when you attack. Instead of trying to find some crappy sound effect, we decided to make our own. shakesoda grabbed his katana and swished it in front of his mic for about a minute, and also recorded about 10 seconds of ambient noise. He sent the files off to me while he tinkered with the path finding and I picked the best swish sound and used his noise profile to eliminate the background noise leaving a very clean sound effect.

Tomorrow we will be adding more enemies, getting dynamic path finding to work so the enemies actually chase you, enemies fighting back, and hopefully our “shapeshifting” mechanic will be implemented too. We also want to get all of our story elements such as voice acting done tomorrow so we don’t need to panic near the end trying to source the assistance of other folks as a deadline looms uncomfortably close.

If you want to check out our dev progress, you can catch us on Twitch!

End of Day 3

In my last post, I discussed that made some serious advancements in our game. Today we (@shakesoda and @LandonManning) have most of the “game” done!

We improved our path finding so that the enemy now follows the player around. We had a bug where you could sneak out of the enemy’s sights and glitch it out, but we fixed that. Enemies now aggro you if you are within pathing range, and it actually attacks you if it’s close enough! We’ve decided on our enemies… Tigers! The reason for the tigers is because when I was writing the story/script, I started adding forest/tree puns. And let me tell you, Taiga Forest is a great pun!

View post on imgur.com

As I mentioned, I wrote up the script (which has been translated to German and French and a special language for NG+) and we had our good friend Nadja voice our main character. This time around, I added my own voice to the mix for the grandpa and the tiger. I also created a crunching sound by obnoxiously eating a bag of Crispers, then speeding it up and pitch shifting it down. It sounds… okay. shakesoda made a walking sound effect by flapping his wallet in front of his mic. It wasn’t meant to be a permanent sound, but we may be running out of time on that front. We have most of the sound effects implemented now, with a few timing tweaks coming tomorrow.

View post on imgur.com

More models and animations were added today, most of which are temporary. As I write this, shakesoda is tidying them all up so that when I wake up tomorrow, the game should be much prettier. But as it stands, we have an idle, attack, and run animation for all three of our “forms”. The first form is the ATK Form, where you wield a katana. The second form is the SPD Form, where you wield a bow… made out of katanas. It actually looks decent. The final form is the DEF Form where you wield a dagger (a short katana) and a shield… made out of bows… made out of katanas. It looks silly and will be updated tonight, but for now, it works!

View post on imgur.com

We noticed that the game was kind of slow, we figured it was because we had lots of objects being drawn. We fixed this by culling all objects that are not within a certain radius of the character. Simple and effective.

View post on imgur.com

Tomorrow is the final day! shakesoda plans to work through the night to add a lot of polish to the game such as menus, nicer models and animations, a user interface, etc. With the polish done, the last major step is to get enemy spawn points working, and have the final cut scene work, and add in our New Game+ mode.

If you want to check out our dev progress, you can catch us on Twitch tomorrow for the final countdown!

LD 38

Murky Mind Post Mortem

ld38_01.png

/!\ ALART /!\ If you have not played Murky Mind yet, please play it before reading on! This post contains spoilers! The game is intended to be very vague and full of allusion (though it may in fact be too vague). If you do not mind spoilers, or have played the game, feel free to continue reading!

Murky Mind was an interesting game to make, namely because the game itself changed so much as we progressed through making it. Our initial plan for Ludum Dare 38 was to take the core gameplay from our previous LD game, "Final Boss", and expand upon it. for LD37, we made a game that revolved around a single boss battle. We wanted to take that concept, improve the fight mechanics and the AI and release some sort of sequel. However, as we were coming up with a "story" for our game, the idea of the boss battle shifted and instead we made a sequel to our LD33 game, "Shark Swimulator".

In Shark Swimulator (You are the monster), you play as a shark who misinterprets the situation as she sees a diver in a shark cage. She believes the diver is trapped in the cage and may drown, so she decides to try and help the diver by ramming the cage, busting it open. Murky Mind takes place approximately two years after the events of Shark Swimulator where you now play as the diver who is suffering from PTSD and has locked himself in his little house, hiding from the world. As the story progresses you start to realise that something bad has happened to our protagonist and that is why he has shut himself in. You get to hear from various people in his life such as his family members, friends, and ex-girlfriend who all try to encourage him to come outside. Meanwhile, our protagonist is having a reoccurring nightmare where he must fight the ghosts of his past in a murky, underwater battlefield.

ld38_02.png

I had the idea early on that I wanted the game to be split into two sections, one that tells a story and the other that is the meat of the gameplay. I had originally wanted the story mode to be pencil sketches that provoked a very gloomy atmosphere but due to time constraints, we were not able to realise that goal. However, @holo managed to make a really nice aesthetic with the cutscenes by modelling the small house in Blender and rendering out still frames using the Cycles engine and some nice effects. He then took those still frames into Clip Studio Paint and drew some really nice looking stick figures on top. I was originally sceptical of these but so far we've received unanimous praise for the visual design of the cutscene images, so I guess I can't complain. :)

There is a mechanic that we weren't quite able to flesh out in time called "Sanity". Though the mechanic works, it is not very well explained. Basically, every day you are given the option to choose an activity to do that day. Some of them are good (increase your sanity), others are bad (decrease your sanity). The only visual indicator for which activities are good or bad is the colour of the protagonist in the cutscenes after you've chosen the option. If the person is red, his sanity went down. If he is blue, it went up. What sanity ultimately does is affect how much damage you take from the nightmare's attacks, and how much damage your harpoon gun does to the nightmare. Sanity also acts as a metric for the nightmare distortion shader. If your sanity is very low, the world becomes very distorted, darker, etc. If we had more time, we wanted to add a little toast notification to indicate if your sanity went up or down in the cutscene.

ld38_03.png

As I mentioned above, the game changed a lot while we were building it. One of the major changes was the actual fight mechanics. In "Final Boss", you ran around with a sword and attacked a big scary monster head-on while also trying to dodge his attacks. This was the initial plan for Murky Mind, but we eventually turned it into a ranged game where you were supposed to kite the nightmare around and avoid his various attacks. In the end, the game morphed into a bullet hell. This posed some serious challenges for us since we had to rewrite our AI (which didn't quite work out...) and rewrite our collision code. The collision code ended up being a problem for us because we needed to balance the game's difficulty with actual performance. We did not have enough time to sit down and really optimise our code so we ended up writing a very basic spacial partitioning system and clump the bullets into crude buckets to help cut down on collision checks. This helped performance some, but not really enough that we were happy with it. We were able to increase the number of bullets on screen by about 20% but the low number of bullets meant that our spiral pattern was too sparse and too easy to avoid. Unfortunately, we were unable to fix that issue before LD ended and the spiral pattern is very easy to avoid from afar. The pulse pattern, however, does require you to actually move, so that's a plus.

The music and sfx we ended up getting in our game were absolutely terrific. I was unable to find a musician on short notice and in a desperate attempt, I asked in the Ludum Dare IRC channel if anyone was willing to work with us to create some music. We had a single person respond, and he was absolutely terrific. What I asked him for was a distorted JAWS-like song that gave off a sense of panic and unsettling feelings and I think he nailed it. When the protagonist goes to bed each night, a very unsettling, distorted song begins to play that leads into a fast-paced battle song that, in my opinion, fits perfectly with the game we were trying to make. He also made our down-beat, gloomy ambience for the menus and cutscenes that really expressed the unhappiness that was filling that house. The sfx for the harpoon gun firing and landing shots were very satisfying and I think that all came together very nicely.

In the end, I am happy with the game we were able to produce in 72 hours. There is always something I'd like to go back and revise or fix up, but I think the game we shipped was "good enough". In the future, I think I'd like to take this game idea and expand on the mechanics a bit, flesh it out, and give it a much darker story with more player interactivity within the story. I would also like to note that in my original story pitch, I had a "bad end" that was deemed "going too far" and "crossing the line". I'd like to explore the ideas I had originally come up with, perhaps in a non-LD setting where such concepts can be given more room to breath.

If you haven't played Murky Mind yet, you can do so by clicking here. The game runs on Windows and Linux. You might have some performance issues on lower end hardware, but the game was entirely playable on modern Intel graphics, albeit not a smooth 60fps. We strive to play and rate the games made by those who rate ours, so please try our game! <3 <3