About FurtherForm

Entries

 
Ludum Dare 35
 
Ludum Dare 30

FurtherForm's Trophies

FurtherForm's Archive

Made it… technically.

Posted by
Sunday, August 28th, 2016 8:23 pm

Garbha LD36 by FurtherForm

Garbha for LD36, Ancient Technology, by FurtherForm

When the clock hit minute to deadline, the project compiled, had level with beginnning, character to control, score mechanic and reachable end condition. And not much else. Technically, it is a game, by the 48h deadline.

Wanted to focus on art and level desing, and I knew quite early that I coulnd’t the original vision by the deadline. At last few hours changed the target to have someting playable by deadline and just have fun. And I got there. But won’t submit like this, it is a good project, worth finishing properly. More to follow.

I’m in!

Posted by
Monday, August 22nd, 2016 7:11 am

Getting all excited by browsing the themes. New sleeping bag awaits, and there is enough nuts and beverages to last throughout the weekend.
Facing the dare with familiar toolset:

Engine: Unity
Art: Photoshop, Blender
Audio: Bfxr, some procedural generator, GarageBand and Audacity.

What I want to do:

  • Use Blender to Mecanim workflow and animation scripting.
  • Focus on levels and atmosphere.

Would be fun to do something tile-based as I haven’t coded anything like that before. Or something with a herd behaviours. Better find a good tutorial or few to avoid spending too much on the basics.

Likely It’ll look flat low-poly 3D with cornucopia of particles. So many ideas, can’t wait!

LD35 Post mortem:

Posted by
Monday, April 25th, 2016 4:19 pm

Here are my notes how LD35 went:

SAT. 16.4.
5.55 woke up, checked the theme. Shape shift! This is exciting, I have one idea already.
7.00 left home
8.00 at M3.
11.00 Basic design is there and concept for the basic gameplay! (sketch here) It is going to be a cellular automaton styled dodging game. Grow and withdraw cells to adapt to environment. Checked lists and arrays syntax for Unity. Explored the oblique frustum technique for camera, Decided not to use it because directional lights behaved oddly with it. Could not preview the lights properly in the game-window.
12.00 Gameobject modelling and texturing.
Learned about Kaomoji (Japanese emojis), seeked out an unicode font to support them.
12.23 There is something dodgy in the salad from the gas station.
13.00 Unity adding objects to their layers and adjusted the lights for background and game objects
14:00 Limited Key inputs to single strokes, was getting multiple inputs from key-presses.
14.52: Have made a grid generator that adapts to width and height parameters, varying rows and and columns.
15.30 This is how the prefab-workflow worked from one way to other and back!
16.17 Keybinding guide textures are shown within the grid. 3D-text objects in Unity.
17.00 Keybindings actually work. Right object reacts when key is pressed.
17.29 Objects spawn at right coordinates based on the keypressed. Problem! 3Dtext shows through the objects in front of them. How do I fix this? There is one solution and tutorial using custom shaders and by generating a font-map. Quick try for it. …. and the tutorial is from 2012 and Unity has changed quite a bit from that, cannot install the custom shader as instructed. If I try the mobile-diffuse shader, then there is no this issue, but lights look worse. Meh. I let it be and then polish it away later if I have time for this… Or, HA! If I disable the text if there is an object in front of it! yeah.
18.44 Grid texts are shown and hidden as they should. No more shining through issue. Cell objects have now random rotation and scaling, looking more lively, and they can also be deleted. Next the big challenge: checking adjacent cells.
19.58 After a break, back at code: Checking one above and below are easy, but sides are harder. issue is that that I made the cell locations with list instead of an array. More complicated to check these. But I can live with this. First we make an parameter to the objects that tells if it is a border object and then we don’t have to check it’s sides. Feels bit like bubblegum solution but it works. Another thing would be make smoking of algorithm based on generation parameters, but that gets overtly complicated. Also checking functions that returns values.
21.00 Mystery bug. For some reason ,cube spawning doesn’t work anymore. And solved: issue was that i used if instead of else if when checking grid occupation status. And there is an array overflow somewhere, but why?
21.22 Start to be tired. Issue was using = instead == with boolean comparison that caused an always positive result.
21.42 The core logic that you can only spawn cells next to existing ones works!
22.00 After spending a day making a keyboard controller, it feels wasted, this game would work intuitively with mouseclick+raycast. Actually the controller idea sucks, even though it seemed fun at the beginning. It just doesn’t feel similar that to typing words. Mouse controller would be more intuitive and make this easier to translate to mobile.
23.00 Added particle emission to the player cell cubes. Looks cute.
23.25. Cell logic for isolation. If the cell is alone, it transforms to yellow, and return to green when connected to other cells again. Expect that sometimes it doesn’t, why?

SUN 17.4
00.36 Cell spawning and exit now has a scaling. Looks better, but did it stupidly with a script instead of curve controller. But I don’t know curve controllers, I know simple algorithms… but this took too much time. Stupid bugs of later our, tried to code an S-curve with to continues scripts that didn’t work out, but well, it’s good enough. Now, how I can get an isolated cell to die?
1.00 Old good parenting issues. What was the right way to reference game object’s parent. It was don with transform, yes, I’ve’ solved this before, but it was very syntax specific. I have a reference somewhere…
1.33 Break, and problems were solved from approaching them from different angle. Feels like a bubblegum-spaghetti code, I hope I don’t have to touch that code afterwards. But it works. I’ve been working on polish, but now it is more fun to work with. There is still no core gameplay. And there is bug with counting the number of cells active. Ah, it doesn’t clear itself -solved.
3.12 Add exception that even if the cell is alone, if it is the very last cell of the player, it cannot die. And checks that that the player cannot accidentally kill himself by removing the last cell. There is way to do it by isolating two cells at the same time, but this is good enough. First enemy is done.
5.26 Enemies collide right and cause damage. Score and energy meters are added. Environment has reference objects that tell about movement forward. Fixed an collider issue by removing them from all unnecessary objects. New problem: UI text scaling. It stays the same regardless of the resolution, so the one I’ve worked with looks like shit when changing the window size. How throughoutly I have to solve this? This also messes with text locations. But mainly, now a screenshot to Twitter and then some sleep at the comfy sofa of M3.
5.50 Too exciting to see what others have made! I should sleep.
11.00 And up! Coffee and Jam On!
Decide to work on release resolution, no need to worry about scaling or text locations.
12.32 Stupid architecture bug: Each grid objects calculates global game mechanics, and there is 30 of them. No wonder it can feel laggy. Part of that is essential, part is not. Should I clean it up? Or trust that the it is not too heavy, it’s only 30 of them at max.
13.00 Cleaned up flicker that happened at spawning – it arrives at full scale and then goes to small and starts to scale up. Solved it by spawning them far and only the bringing them to the scene. Issue is with the algorithm, if you spawn and withdrawn quickly before it has finished it’s animation and new object is created, there is flicker. Could the new object inherit the scale of the killed one? nah, this doesn’t really matter.
13.29 Game over state gets triggered for some reason when first object gets spawned. Why? I fix this by adding a timer where a game over state is not possible during very first seconds of the game.
14.00 Game over works. There is UI text for it, and background overlay and slowday of the game movement to make it look nice. Added time based score in score, but it has to be conditioned that it doesn’t affect after game has ended.
15.30 Modelled few enemies to replace the mockups. Now simple animations! Let’s refresh how they were done in unity with bones. Took a while to remember that you have to parent mesh to bones and not the other way around. And after you sorted out the vertex groups, then the rig worked as it should. I’ve never imported animation loops from blender to unity by myself, but let’s see, it cannot be that hard.
17.23. Nope. This animation importing just sucks. Tutorials talk about using fbx, but it seems to mess either scale or rotation in animator. Solved with it with using older ascii-fbx format, and removing all-actions check, and import checking loop time variable, and using exactly the right animation in animator (why does it import multiple?)
17.29 The way I did these animations was way too complicated considered what was needed. Would’ve been faster with rotation scripts. But well, it works, and I needed to refresh these skills.
19.30 Few more enemies. For some reason, texture colors look off. WTF? ah. model material inheritance.
21.18 Hour of despair. Looks like I cannot make it. We’ll then time for audio. I have idea how to hack levels inside. Feeling frustrated that the animations have caused so much troubles, and wasted so much time with them even though they are so simple and irrelevant.
22.25. Basic sound effects done: Lesson: use only one audio player to play all of them, odd bugs when I tried using multiple audio sources.
23.25 My favourite music generator is down! (http://www.abundant-music.com) I just and just can get it working, but saving doesn’t function, I can’t download! no! There must be others using this as well. Used http://www.earslap.com/page/otomata.html generator instead. hah, kind of suiting, that one is based on cellular automata as well and fits the Japanese themed look of the game.

MON 18.4

00.12 And animations work so easily using .blend format directly instead of fbx.Why didn’t I check this before.
3.55 And it is done! Towards the end, I cared less and less, bugs appeared, bugs stayed. There is one level that doesn’t finish, but it doesn’t matter because it is almost impossible to complete anyway. But it is a game. There is challenge, score, beginning, looks good, and sounds alright. Yay!

Submitted 7 minutes before deadline. With a screenshot. Phew. I made it. Ludlum Dare 35 completed!
One hour to browse what others have made and and I can take the first bus to Helsinki.

Features added on the week following the Game Jam:

Added level loading and made 5 levels of increasing difficulty.
Noticed that my planned support for levels with different sizes of grids did not work as intended (would need way to save cell states outside grid objects and then reparent them). Went around this by using a same large base grid on every level, adding limiter objects that turned key-grid items on and off. This allows making levels that inceease in size from small to bigger but other way around there would be issues with cells left in cover. Good enough for this jam game. Next time, I’ll use different scenes for levels.
Made animations to start on random frames so that the scene looks more lively.
Subtle particle effect with trailing sub-emitter to the background to increase the feeling of movement.
Figured out how to add curve controllers to scaling. So easy. why didn’t I google it before. Now the score text pops when score is gained. But you have to fiddle with the text-field pivot and the logic is bit unclear. Sometimes it goes to side, and it is bit unclear how to control it.
Polished the levels, so many bugs on object locations, movement speeds and directions. Should not have built over what was left over from last minute rush but made the levels from scratch. And issues left over by how I thought to make the level loading first, but it works good enough.
it is possible to win the game! there is victory screen.
Something fixed the odd issue of one sound effect not playing . Not that I complain, but it would’ve been nice to know why that bug existed as I tried to solve it with so many ways.
could not make the berry to spin nicely around itself. Probably about 3D model pivot, but it shouldn’t be so. Fixable maybe by adding a parent object, and spinning that, but well, later, right now after the last minute rush, the prefab-hierarchy is broken so adjusting it right way would be cumbersome.
added a very gentle glow as post processing -image-effect.
There is odd level restarting bugs left, I assume it has to do with time slowdown.

Post Jam thoughts:

Find a way to make gifs about the game feed. Other than recording screen with phone. Crucial part of the social media.
a way to add existing cells at the beginning of level would be nice.
It is allright. Game started as UI test. There is something fun about using the whole keyboard, eventhough it is clumsy.
And that whole crowded-artery metaphor is nice. Originally thought the story as “cyber-weapon cells delivering targeted medicine to hearth of an cyborg, intelligently avoiding the countermeasures it deploys” , well, the visuals are quite different, but crowded and stressed arteries as roads full of beings is a ok thought.
Same with playing with grid based cellular automata, thought this kind of gameplay might not suit it well. There is encouragement in score mechanics to keep many cells out, but in practice, best method of playing is kind of 3d-snake, stay small and nimble and you fit to move through the labyrinth, and only expand when you need that power-up. This is not so much fun, as growing big. For nimble snake controls something else would work better.
Something like this would work on large mobile. The right positioning of grid clicking is tricky but solvable. Count clicks by the cell “face” location instead of bg-grid if there exists something above or below. Doable. But what would be the right gameplay?
The open hectic level of the compo entry is in a way more fun than the cramped smaller levels I made for the polished version. This mechanic works on larger areas. Maybe more gathering. Or leveling up the individual cells and tracking their development to something speciaö
Weapons/special skills loaning from Bestfiends / candy crush styled pop-ups? Could there be freemium potential, fun enough? nah.
It is difficult and clumsy considering how fun it is now. Basically how it turned out is kind of 3d-maze where figuring out the depth takes learning.
Make a clear tutorial. People don’t realise how to use the keyboard. And now the start screen looks so crowded.
Make the first levels easy, not for your own liking.
I’ve made generic timers so many times now that I should make a generic class for that single purpose.
Feeling confident with unity skills again. Back at the fresh memory how to make 3D models and animations from Blender, get them smoothly in unity and make a nice basic gameplay prototype.
Keybindings for non-us/scandinavian keyboards would be nice.
Lessons learned: focus on core gameplay. The juicy polish is nice touch, but more puzzle-type levels would actually be better. I know that work better when it is pretty to look at, but it took so much time. Then again, I was just rusty, right now, I could make the same things so much faster.

Filllight postmortem

Posted by
Monday, August 25th, 2014 1:11 pm
Second Level Colors.

Second Level Colors.

This was my first gamejam entry ever.  I knew the Ludum Dare was coming as a friend had asked me to join his team, but as the voting result got out, I got swooned in the hype and decided to try entry of my own. Get something finished. At the same time, it was good intro to Unity & programming – neither of which I’m that practiced with.

What I went right:

-Scope: small and simple was well within the time limit and my coding skills.

-Atmosphere, Thanks to unity particles. Sure, they are done with presets, but it made nice boiling sea. As my main challenge was coding, models were very minimalistic, worked here.

-Music composed  with a generator. Fast and good enough.

-Support: having helping minds to bang against when solving issues and good documentation to refer to.

-Learning. There was lots of that.

-Finished it! Yes!

What went wrong:

-Coding, while it went alright, even some more experience under the hat would’ve enabled so much more.  Better effects, more effects, smoother everything, better controls.

-Testing. I’m not certain it is possible to complete the game as it is supposed to. Luckily, some triggers collision detections bug and make it possible. Actually generating and validating levels like these would be interesting. topology problem. Afterwards got good feedback regarding controls and field of view, but that was already past the deadline.

What was missing:

Mainly a proper player character and more levels.  A Menu, story screens, some animations, more sounds and music,  timer based scoreboard and testing.

Proper Name: Went for the silly compound word just for the sake of visual of quirky triple l’s boderd by symmetrical i’s. Amh, yeah.

 

Conclusion:

First completed LD. This was a good intro for the starting season in the uni, got confidence knowing that I can make it. Inspiring, wanting to work more on graphics and I’m certain I’ll participate again!

Thanks to the friends and family making this possible.

[cache: storing page]