Posts Tagged ‘unity3d’
I made a game over the weekend for Mini Ludum Dare 53rd. The theme was – The Future Is Now.
The name of my game is ‘Future Summer’. It is a combo of first person platformer, 3rd person mouse click to move, and cinematic scenes of the camera moving.
The game was made with my usual process – digital painting, 3d modeling, texture painting, and finally game design with Unity3d.
If you play Vaults Inc you will agree with many of the players that gave me detailed feedback: it has substance, but it is buggy (specially the interface) and has mixed graphics.
As the developer and programmer, bugs affect my very soul. I’m bound to a moral code that I will fix them ALL. In fact, many of them are already fixed in the major rewriting that I’m doing.
What about the GRAPHICS
I’m not an artist. I have a good sense what is good and what is bad, but I cannot execute. As an indie, I can do something, but definitively not a professional.
That is why I decided to open the my heart and my wallet to find a partner for my gaming adventures. I’m hiring artists. I need someone with great artistic view, bold style and great skills. But I have to confess that it is harder than it looks. Maybe I’m searching in the wrong places. Currently, I opened a position using oDesk freelance platform and advertised the job at Pixel Junk. Also in my blog.
Is there anyone with experience that could share hints and tips?
for the reasons I mentioned in http://blog.gamenific.com/2014/05/the-power-of-good-feedback-new-game.html, I am very proud to announce that my Ludum Dare 29 entry, Vaults Inc, will become a full feature game. Thanks for everyone that played and gave me crucial feedback.
The game needs to go back to design. Not only there are several features that I could not implement, but also I have to give a total remake on things that already done.
From a quick list, here are some items:
- Save and Load functionality: auto explaining and the benefits are quite obvious
- Graphical revamp: it was one top complains from LD players and not with reason
- Bots: a computer opponent for single player
- New game play features: challenges and empty blocks are among the things I want to implement to make the game richer
- Campaign mode: for single players, with specific scenarios
- Multi player: online and local
- Social: comparing scores with friends
- Multi platform: PC, Mac, Android an iOS for sure. Other platforms could be considered
If you have not played yet, Play it now!
This the 3D game we did for LD29 Jam. Find your way to the Ogre’s gold in 4 different levels.
PERSONAL EXPERIENCE – Alexis
Had a blast on my first LD ever. Somehow we all agree to make a game at the last minute before the jam started. What makes me the most proud is that we are able to make a 3D game in such a short time and 100% remotely. Right now I am living in Florida, US; while the rest of the team is living in Lima, Peru (where I am from). We are conscious that this game has a lot of flaws, especially in what comes to the mechanics (we didn’t had enough time to make the illumination work as we wanted); however, this projects gives us the confidence that we can make 3d games in a short period of time.
Have unlimited fun playing autogenerated maps.
Web (Kongregate), Windows, Mac, Linux. Web version recommended.
-Made with Unity3D
SHOW SOME LOVE
With the weather being so nice outside last weekend, it was really hard to get psyched about sitting in front of the computer all weekend to make a game. However, I’ve participated in every Ludum Dare and mini-Ludum Dare since #26, so I felt compelled to make something even if it was really simple. I really didn’t have any good ideas for “Beneath the Surface”, so I decided to create a treasure hunting game. For my LD29 warmup, I made a simple MineSweeper game, so I thought it would be neat to expand on the basic concepts of that game. Instead of avoiding mines, you are trying to find buried treasure in a three dimensional world.
At first I just got the hidden treasure pieces to randomly populate on the game world, which are the items you must find. The digging unit was the first that I created, which I renamed “excavator” since it sounds fancier. He just uncovers whatever is hidden at his location. However, randomly adding excavators to the map really didn’t seem challenging.
Then I got the idea to allow the player to “ping” the map to get a general idea of the treasure location. This reminded me of the news stories about crews using scanning devices to find the missing Malaysian airplane off the coast of Australia. I originally wanted to have a heat map showing the pinged locations and the amount of treasure in the area. However, I had to settle for just colored circle areas on the ground representing the amount of treasure in the area. It was fitting that this is very similar to the job that an archaeological surveyor does, so I created a “surveyor” unit specifically for this job.
Finally, an excavator only knows about digging, and only a true expert would know the value of a lost treasure. Therefore, I created the “appraiser” unit to determine the value of each discovered treasure. The inspiration of this unit came from shows like Pawn Stars and American Pickers, where they will call in an expert to determine the value of a given “piece”.
I had plenty of more ideas which had to be cut. There was going to be rocks on the game world and an explosives expert unit which would destroy the rocks so that the excavator could dig. I also did a little research on some of the most famous lost archaeological artifacts from around the world, which I wanted to include in my game. However, I just had enough time to include one treasure piece which looks like a golden chalice. I also got suggestions to add adversaries like spiders, floods, and diseases which could eliminate units, but I didn’t have time to include any of those.
For this game, I wasn’t too worried about creating the best looking game ever. In my previous Ludum Dare entries, I spent much more time polishing, but it never seemed to have much of an impact on my ratings. I’m much less concerned about ratings this time, and more focused on learning new things. For example, this time I got fully functional map controls working with the mouse, including zoom in/out with the mouse wheel. I figured out how to create a unit on the game world at the position where the player clicks. When implementing that feature, I got stuck when trying to cast a ray from the camera to the plane on the ground. For some reason, none of the camera API calls were working. I thought my Unity libraries may have gotten hosed or there was some issue with the compiler. After taking a break and coming back to it, I realized that on the title screen I had created a script called “Camera” for moving the title camera. All calls to camera were referring to that script, which explained why I could not access any of the Camera API methods. Changing the name of my title camera script resolved that problem.
Another issue was with the appraisers. Since the player could add an appraiser at any location in the world, the appraiser would need to walk to the nearest treasure. I did learn that I can access all of the Treasure objects by tagging them with “treasure” and then calling the GameObject.GetObjectsWithTag method. This also resolves a Unity problem that I was never able to figure out, which is referencing game world objects (in the Hierarchy) from a Prefab.
I will admit that there are some things that I’ve done so many times when creating a Unity game, that it just isn’t fun anymore. One of those things is creating human models. Unfortunately, in the 48 hour compo pre-existing assets are not allowed, so I had to create a human model from scratch again. I guess it’s good for the Blender practice. I used one model for the three different units, but used a different texture and animation for each unit. I originally started by creating the excavator with a shovel, but I found that it was going to be way too difficult to animate the character with the object, so the shovel was removed.
In the end, I got most of the basics working but it really didn’t look like a completed game. There was a bug which sometimes prevented the appraisers from collecting treasures. After looking into it some more, I found that this was because I thought that code execution stopped when Destroy was called on a gameObject. Actually, the script attached to a gameObject will continue until the Update method finishes. In my code, the appraiser was targeting the next treasure after Destroy was called, so that no other appraisers could target the treasure and appraise it. That was a simple one line fix to solve.
The biggest mistake that I think I made in this Ludum Dare was spending to much time basically re-inventing the wheel. I really don’t like the default Unity GUI buttons, so I decided to make my own. However, the process of making custom buttons is not a trivial one and is time consuming. Before the next Ludum Dare, I would like to have my own personal Unity library for things like graphical toggle buttons, menus, camera controls, font outlines, and dialog boxes. That way I could spend more time making the game, rather than trying to get a button to illuminate.
I liked the concept of this game, because I haven’t seen it done before. Therefore, I spent a little time this weekend making some changes for the Post-Compo version. I looked into how to modify the Unity terrain at run-time, so now when the excavators dig, it actually makes a dip in the terrain which is what I had originally envisioned. The biggest problem I ran into is that the terrain map starts at 0 height, so there was no way to make the terrain go any lower. Setting the base terrain level to 300 fixed this problem, and I just subtract 0.005 from the terrain height where the excavator digs. It took me a little while to figure out that the height array is from 0 to 1, not actual world units.
Overall, I’m happy with the results of this game. It definitely isn’t as visually impressive as my previous Ludum Dare entries, but I think the gameplay is much deeper. Adding adversaries to the game would probably make it much more exciting. If there is enough interest, I would be willing to port it to other platforms, since I think it would make a great mobile game. Online features such as leaderboards would also be nice to have. If I ever felt really ambitious, I could have an online server containing treasure data for everyone playing the game, so everyone is excavating from the same online world.
New Dawn was the first Ludum Dare entry for both members of our team, and the first game jam/compo of any sort that we’ve done. We went in with little preparation and an overdose of optimism, but overall it came out pretty well! We weren’t able to do as much as we’d hoped – that probably goes for everyone here – but we finished in 72 hours and still came up with a solid little game.
We had a general idea of what we wanted to make before LD started: some kind of mini-RPG or adventure game. We couldn’t help brainstorming as we were voting on themes, and we really liked the idea of setting the game in a dystopia. A few of the themes could’ve made that setting difficult, but luckily for us,“Beneath the Surface” fit really well. It led to an interesting post-apocalyptic setting where the action takes place underground because the surface is no longer habitable. Plus, a dystopian setting was perfect for adding layers of secrets and false pretenses, which meant we could interpret the theme both literally and figuratively. We didn’t get to do as much of the latter as we originally planned, but we think it still comes through pretty well.
Although we started with the idea of a “mini-RPG,” we knew we probably wouldn’t have time to add many RPG elements. As it turned out, we ended up just sticking to a point-and-click adventure game. In order to have time to code extra RPG features, like a combat system, we would’ve had to spend less time on art and the dialogue system. That would have led to a very different kind of game, not necessarily a bad one, but we felt New Dawn would be better served by focusing on the story and the atmosphere. Having a better dialogue system and more detailed art helped to strengthen the story and atmosphere, whereas RPG mechanics wouldn’t really add as much in that sense. That said, if we had more time, we would have liked to add those as well.
Stefan (Coding, Art, Concept/Gameplay Design): Going in I knew I was going to use Unity (and C#), along with 2D Toolkit. I had laid out a basic plan which was to try to implement all the features by the end of the first 24 hours, then all the art by the end of the second 24 hours, and leave the third day for testing, bugfixing, and polish. I did this because I know that games always take longer than you expect, so this gave us some room to work with and helped curb our ambitions and expectations. As it turned out, this was a great idea, because although I did finish all the crucial features in the first 24 hours, the art ended up taking much longer and wasn’t done until well into the third day (and I didn’t sleep at all Sunday night either!).
Ultimately I’m a programmer, not an artist, so I’m not very efficient at that stuff because I haven’t done it much. However another big reason it took so long is that while 2D Toolkit is very convenient, it has some very tedious interface problems that require manually doing repetitive actions over and over, which really should be automated. These actions can be automated by script, but at the time I wasn’t sure if the amount of time it would take to write those scripts would be less than the time it takes to do the stuff manually. In retrospect, I think for the amount of art we had it probably wouldn’t have saved us that much. However, if I could do it over again, I would have set up those automation extensions to 2D Toolkit before LD started, because that definitely would have saved a lot of time.
The art itself also took a lot of time because I chose to put a lot of detail into it, despite it being very low-res pixel art. The details are largely in the shading, which ate up a lot of time, especially for the tilesets which required many different versions of each wall tile in order for the shading to match up. This also meant more work for Olivia when placing the tiles to build out the levels. The shading, especially on the tiles, is a very subtle effect, which I don’t think most people would notice unless they’re familiar with how tilesets work and are specifically thinking about it (which you usually don’t do when you play a game even if you are familiar with how it works). However, I still think it was worth it to spend this extra time, because although most people won’t consciously recognize that the shading is there, when it isn’t there it really stands out and looks noticeably worse. In particular, I think the atmosphere of the game was really well served by the extra shading detail. After drawing the basic shape and applying the shading, I also applied a noise filter to all except the character sprites to give them a bit of extra grit which I think fits the setting well.
On the third day, once the art was finally completed, we only had a few hours left before the submission deadline. At this point I implemented a few extra features that I didn’t consider crucial, most notably the ability for NPCs to move. At this point it struck me that the ending we were planning was going to be very anticlimactic; so I decided to spend the rest of the time quickly building out an additional final level to provide a more climactic ending, while Olivia was finishing up the penultimate level. I think this was definitely a good decision in the end, however it was risky, because we ended up cutting it very close; if it wasn’t for the submission grace period we would have missed the deadline. But overall it definitely makes the game feel much more satisfying when you finish it, so I’m glad I made that choice.
Olivia (Writing, World/Level Design, Music): We knew the general kind of story we wanted to tell before LD started, so once the theme was announced I started hashing out the details. I spent most of the first day planning the overall plot, with input from Stefan, and writing descriptions/dialogue for generic NPCs and a few items. Though I didn’t implement them that day, all of those descriptions made it into the game, and really helped the world feel more inhabited. I also wrote text for an intro screen which eventually turned into our game page’s description.
Saturday and Sunday were mostly spent setting up levels: I’m pretty new to level design, and that turned into a huge, unexpected time sink. One of the original “exterior” areas I’d made was close to the size of a real city block – way more space than we had time to fill with interesting stuff! That time would’ve been much better spent populating the existing areas and doing additional writing, but…lesson learned. I said goodbye to my hopes of having all the levels finished by midday Sunday, and had to cut a plot branch and simplify the remaining ones to make sure I’d have time to finish the story.
Monday was mostly a rush to implement the last of the plot. Thankfully I’d planned it all and written some of it beforehand. The penultimate level, two crucial dialogue trees, and two optional but pretty significant NPCs didn’t exist in-game until late Monday afternoon. I also wrote the second (and shortest) part of our music that day, since I wanted at least a little variety. In our rush to submit, there wasn’t time to put the intro text on a starting screen, but that’s something I definitely plan to fix post-comp.
There were a few things I’d hoped to fit in, even with the deadline looming, that didn’t make it. The main one was a set of PA speaker announcements (in the form of text dialogue) which would’ve given more backstory and context to the world. I also wanted to implement sound effects – we’d made a bunch in bfxr – and additional music. My next priority would probably have been adding waypoints so generic NPCs can move and putting more decorations and ambient descriptions throughout the world. In spite of all those cuts, though, we still managed to tell a complete story in 72 hours, and I’m pretty happy with it.
What We Learned:
After we submitted the game, we got a lot of great feedback from commenters. Several people had problems with the click-to-move interface, and since we didn’t anticipate that we hadn’t put in any alternate control schemes (though our post-LD update lets you click and hold, which should alleviate much of the problem). We also made the main quest a little easier to figure out in some post-LD tweaks, since several people were getting stuck. Additionally, given the amount of content we had to cut due to the time limit, some of the areas ended up feeling a little empty. They probably should’ve been shrunk down. On the whole, though, the story and art that we had came together really well, and we ended up with a short but atmospheric adventure game.
LD was a great experience, and it really motivated us to make a game of our own from start to finish. We might do something totally different next time around, but we’ll definitely be there!
Hey, folks. Coin Flip Games here to tell you about our entry for LD29, Bitmite Blitz. We’re incredibly proud of this game and wanted to make sure YOU got a chance to play it. If you’re not convinced, here’s some of our favorite reviews we’ve gotten so far!
“Super fun game. I have highscore! for now :P” - tehryanx (Still has the high score, btw)
“I love games that put me in a perspective I never would have thought to explore. Great game!” - greysphere
“This is definitely one of the most polished games I’ve seen in the LD. Having an achievement system is an impressive addition, given the time constraint.” - StencylTuo
“Good game, it gives me the same feeling as Flappy bird which is a good thing.” - Sparrow
Back? Okay. I wanted to talk a bit about how we accomplished the global leaderboard. I’d love to see more games with this feature because I think it adds a whole new dimension. So, to start, you can implement this in any language or game engine you would already be using. Some (like Unity) will make it easy than others, however. You need 3 things, a server to host the scoreboard api and scores, you game and a communication layer between them. Ideally, you want to have something in place to prevent people from adding fake scores as well.
Set up a database of some sort. Use whatever you would feel comfortable with and if you’re not comfortable with anything, use MySQL or sqlite. You can get away with, as a bare minimum, a single table: scores, but that’s not so much fun, is it? You can easily use this in a bunch of games if you do it right the first time.
- Set up your database engine (mysql in our case)
- Add a database and user. Make sure that the user permissions make sense. Don’t give them GRANT access to anything. Ever.
- Add the tables as below:
Alright! Done with the database for now. Now we need to setup the API. I’m going to leave the actual implementation up to you (as an exercise or something), but the functionality you’ll need is…
- To receive input from the web in some well defined format. I used PHP to get data as JSON. You could use Ruby, Python or whatever fancy language you want. You could use XML too if that’s what you’re into.
- Check the input to ensure that it’s valid. (Did this come from a legitimate source? Does the input make sense?)
- Sanitize the input. (Can’t stress this one enough)
- Perform some action on the data. (Run the command ‘getScores’)
- Return results in some well defined format. (Package up the results of the command as JSON and pass it back)
And on the client-side (game) we need to do the same thing, but in reverse. The client needs to build these requests and be able to parse the responses. Since I used JSON, I’ll show our request as an example.
api_key: ‘…’, (I’ll get back to these)
And the server would spit back
['name': 'Awesome Bitmite Blitz Player', 'score': 100000],
['name': 'Awesome Bitmite Blitz Player 2', 'score': 10000],
Easy enough. The trickiest part is ensuring that the scoreboard can’t be tricked into allowing scores that aren’t legitimate. That’s where the API key and secret come in. For every game that will use this leaderboard, generate some random string for the API key and some random, hard to guess string for the secret. The database knows what these are and your API can check them out no problem. You’ll also need to let your game know what these are and if you’re lucky enough to have a compiled language, they’ll be safe from curious eyes. (if you release the source code for your game, strip both out).
So now the server API and the game both know the API key and secret. Great. Now let’s use them to generate a signature for all the requests that the game client will make.
So the idea is that both the client and server can construct the signature independently and compare them, but prying eyes cannot. The key, secret and a time/token are needed so that requests to the same API resource (getScores) won’t always generate the same signature. It’s secure because the secret is… well… secret.
(There might be some of you that recognize this pattern. It’s basically the same model that Amazon Web Services uses.)
So that’s the basic idea. Here’s some resources to use if you want to implement it yourself:
Cheers! I hope someone can get some use out of this!
That’s my second LD. I was so tired and sleepless by reaching the compo deadline that I forgot to make a post about my entry. I made a kind of shooter, a ‘kind’ because you will control a small army of archers and catapults. All graphic was made from simply unity3d primitives. So here it is :
Defend Your Kingdom
You are in times when legends are reality, your medieval companions and yourself have to defend the realm from evil.
The earth cracked open and demons started to crawling to the surface.
You and group of knights you’re commanding are bounded to stop them.
Protect the kingdom from demons coming forth! Keep them beneath the surface so that no poor soul get devoured!
Hordes of demons trying to reach the surface:
Single catapult witch archer:
I appreciate any rates and comments!
Hi there! Daniel Snd here, the arts half of Infection Team. I’m so happy with all the positive response from the community about the game and the art of it that I’ve decided to write this more detailed postmortem on how I created everything in under 72 hours
After working on a few jams I picked up some tricks to work faster and get more assets out in less time, so I’ll be talking a bit more about those tricks. Also thinking of doing a few video tutorials on the creation of those kind of assets later.
So, in every Jam the first thing I create is the Character. It usually takes the longest out of all the assets so I like to get it out of the way first. I also try my best to be able to use the same rig and basic animations for all the characters in the game, as rigging and animation take a longer time.
I’ve created the basemesh out of an 8 sided cylinder, using another cylinder for it’s arms and extruding the legs out of each side of the cylinder. That gave me a quick lowpoly basemesh to work with, and make all my characters out of. For the main character I’ve included a little smile on his basemesh, and big round eyes, because it’s cute. The eyes are higher poly than the rest of the body (I really wanted them to be round haha). I took it to ZBrush to give it a more natural organic format (I like the Move Topological tool to move things around until they look right, wish maya had better sculpting tools.) then went on to UV the Character.
When doing art for Game Jams I usually try my best to make my UVs Mirrored, so both sides of the character are occupying the same space. That way I only have to paint half the character and the other half will already be painted as well, and I have to worry less about seams. As you can see on this picture, since all characters share the same Basemesh and the same UVs, it’s pretty easy to adapt the textures from one to the other, creating variation without spending much time. For extra enemy variation I also played with Hue & Saturation in each of the textures to have a bunch of color variations, with almost no extra developing time.
For the Big Fat guy with all the teeth I wanted to have a bit more detail (He would be bigger than the others in the game, with more health and slower, so I wanted him to stand out) I subdivided the basemesh and Pulled a lot of spikes out of his back with the extra topology.
With that basemesh ready to go, went on to pull it around creating enemy variations, you can see on the picture above how all of these are created from the same basic mesh. I took extra care to not move their arms and legs out of place. That way I was able to recycle the rig and the animations. I actually exported the Rig with all the meshes together animating at the same time, and let Sebastian just Tick on and Off the meshes he wanted for each character.
So with the rig working, I started to do the animations. Before getting involved with Game Design, I studied to be an Animator, so to me that’s one of the most fun parts to do and I love to experiment with it. For Game Jams there are also a few tricks I do to make the process quicker.
The first thing I do is creating a walk forward animation. There is a really great and detailed tutorial about creating walk cycles here. With the animation working, I’ll select all the frames of the copied animation, go into the Dope Sheet and scale them by -1. The animation will then be playing backwards. I’ll then select the COG controller, select the curve on the right rotation for the whole animation and drag it until the character is tilted backwards. With that I already have a Walk forward and walk backwards animation.
From there I make a new copy of the walk forward animation. This time I’ll pick the main controller (the controller that moves the WHOLE CHARACTER at once) and I’ll rotate it so he’ll almost face totally to the side. Then I’ll pick the COG controller, select the whole yaw rotation curve and drag it until the character is facing more to the front, while his legs are moving to the side. I’ll do that to the other spine controllers until he is doing a nice strafe. I’ll then do the same to the arms to make sure the weapon hand is still pointing forward and the other one is not crashing into the body.
And that’s how I take 1 walk-cycle and turn it into 4 walk cycles without having to re-do the whole thing.
Next thing I do is the Idle. The Idle is really important since most of the other animations should have it’s first pose being the idle pose, for better transitions. Usually for Game Jams I just keep the idle simple, using a moving hold with a few rotations on the spine to simulate breathing. After the Idle is done I’ll go on to do the Hurt animation, starting from the idle pose and finishing in the idle pose.
I’ll then Duplicate the hurt animation, delete the part where it ends back in the idle pose and make it end into a pose with the character on the ground dead. I’ll usually also add a little pop after falling for a nice extra detail. Lastly attack animations, starting from the idle and ending back on the idle. I usually do at least 2 so it doesn’t feel like only 1 attack.
With that, I finished the basic characters (It took from 8AM to 12:45PM according to my time lapse screenshots, so about 5 hours). I only made 3 characters at first, and made the other 3 in the last day when I realized I had some extra time for details.
Now it’s time to start creating the assets for the level.
Usually the first thing I do for a level is a floor texture. To speed up stuff, I didn’t want to proper painting with properly blended colors and gradients and all that stuff, so I decided to just try and do my textures with the Pen tool in Photoshop, Vector drawings! Started with the plain color, added some random shapes with a brighter color, then created smaller shapes inside those shapes with a even brighter color. Lastly I used a filter offset to check how well it was tiling, then fixed the tiling by changing some of the shapes, and added some shapes in darker color between the big shapes to make them pop out even more.
I did the same for pretty much all the other assets, with some assets getting an extra AO multiplier here and there for extra pretty shadowing just because.
After getting the floor done, it’s time for the walls. I started with a subdivided cube, deleted everything but the front and top. I then created the uvs for it and wrinkled it up taking EXTRA CARE for the vertices on the side to be in the same Y and Z position, so they would match. It’s also important to note that they were perfectly aligned to the grid. That way we can easily snap the walls together to create levels. In this case, we used an old procedural level generator script I wrote that does that job creating a level with the modular walls we feed it.
With the Half-wall done, UV’d and Wrinkled, I would mirror geometry so we would have a wall that’s front and back with it’s sides free. I did a couple of different variations of the wrinkled wall so they wouldn’t all look the same in the game, and look less like a modular piece and more like a regular wall.
Now that I have a proper wall, and it connects to other walls perfectly like a good modular wall should, I need some curved walls, so I can curve my levels, otherwise my level will end up being composed of all straight walls XD
For that, deformers in maya help me a lot. I can use the bend deformer to create a start for my curved wall (it won’t just magically be modular by just using the bend deformer, but it’ll give you a good place to start. From there I would position a wall on the adjacent grid from it and Snap the vertices so it matches that wall
From there I’ll usually put 4 Curved walls together to form a column. Columns are awesome to hide imperfections and to place in the middle of the map to create branched paths. One last thing is creating a more diagonal/less curved corner wall. So it can form straight walls in a diagonal pattern in the map. I would select the middle edge with a soft select making sure the vertices that I need to stay in place for the modularity of the asset stay untouched and punch it inside.
Now we have all the assets we need to get our levels being generated.
I imported those assets into Unity and brought with it my old Procedural Level Generator, that I created for another project, based off the C# example on this Cellular Automata Method for Generating Random Cave-like Levels on Rogue Basin.
In almost no time I had a LITERALLY INFINITE variety of interesting base level shapes for me to pick from and start decorating my level. Kept pressing the space bar until I saw a shape I liked, copied it over to a new level. Now I needed some nice decoration assets for it. At this point it was about 5pm of my first day (I started working 7am). So right now I’m 10 hours of work into the project.
At this point I’m thinking what the hell kind of decoration one would find inside the human body, first thing that came to mind are red blood cells and white blood cells. Created a red blood cell out of a cylinder (again using half uv for quicker textures, and same flat vectorial texture painting). In the interest of having more assets in less time created a variation of the red blood cell “damaged” by pushing one of it’s sides in. I also created a white blood cell out of a sphere, by using the SAME TEXTURE as the floor, but tiling it more and changing it’s color with photoshop’s Hue & Saturation tool.
Next I figured I could make some sort of vein-arteries thing and rig it, with that I was able to do a lot of asset variation just by contorting it into different positions. I shifted the UV to have one red and one blue in the same texture. Then I figured I could take it one step further and use other deformers to create more interesting assets with the same model in seconds. You can see there an example of using the Rig (Joints), Twist Deformer, Twist + Flare, Twist + Flare + Squash, and Twist + Flare + Bend. As you see we can combine several deformers for even more variation of results/assets.
So out of that one cylinder and a few deformers I created a whole bunch of different assets. For the grass I actually ended up cutting the bottom part of the cylinder and using only the tip, also edited the mesh a bit by merging some vertices.
From there I built a kind of Geiser thing (I have lots of those around the map with bubbles and goo popping out of) starting from a Red Blood Cell (It was there already and kinda had the upper topology I wanted so… why not?). I did have to Redo the UV for it though.
This one asset became SOOOO many others, using same UVs too. So I saved A LOT of time of doing UVs and Textures.
Cutting the bottom half it became the entrances for the enemies spawn and objective. With Bend Deformer, Flare Deformer and Squash Deformer it became a lot of Goo Cauldrons and Goo Droppers. With Inverted Flare Deformer and some extrusions it became a base Tower Body, from which applied Twist Deformer, Flare Deformer and Inverted Flare Deformer became 4 Tower Body Variations.
Closing it off at the bottom and adjusting the mesh it became a Tower Head. With sometimes mesh adjustment, sometimes Deformers, it became 8 tower head variations (Even though we only have 3 Towers in the game lol, talk about overdoing!) I made Body and Head separated to give Sebastian more freedom to choose how to mix and match those, and for it to be easier for him to make the head turning towards enemies without me having to rig the towers.
And lastly, From the tower heads I pulled a handle from the bottom and fitted some extra entrances in there for the guns.
I also made a rock of fat (or random gooey thing) and made variations out of it by using deformers/soft selection and by deleting the bottom and using only the top on the case of the smaller ones. The gooey light thingie is the same mesh as the white blood cell (pretty much a sphere with ends fixed so there is no star) but more squashed. I also put some Veins on top of the Floor texture and added some Alpha to it. I got the Fat Rock mesh and squashed it into the ground, and used it as a decal in several spots of the level, Sebastian later used it in the back of the Shop. Since I was in an alpha kinda mood. I made that green goo texture to put in a Quad with alpha. I barely used it, but it’s there somewhere.
And that’s pretty much every 3D Asset used in the levels. All of the other looks is Hue & Saturation adjustments and Color Balance in Photoshop to achieve different looks through colors. Since I was doing pretty well on time and I already had plenty of assets at this point, I decided to do some extra details and animate some assets.
I didn’t even properly rig those assets, just placed some random joints and animated them directly to the joints. Also some of the Arteries/Veins that are standing up have a little script that constantly rotates them, so it’s kinda like those barber shop things… It’s some really small details, and probably no one will notice them in the game, but they make me happy to look at, so I think it was worth it XD
So I set up the level, I populate it with nice decoration and send it to Sebastian. Once he gets the game working he sends it back to me and this is how it looks like:
So yeah… The assets are all in there… Why doesn’t it look good? Time to do some lighting! And change that camera, that camera is not cool D: Can’t see almost anything of all the cool assets! let’s show off those assets!
So at first I just changed the directional light a bit, it did look better than it was looking before, but I realized quick enough that it wouldn’t make much sense to have a sun inside the human body. I turned it down to get a more darker vibe and decided to fiddle around with point lights.
Now the thing with lighting, is IT HAS TO MAKE SENSE. You don’t just throw a point light in there and that’s it. You need a logical explanation for that light to be there. So I started to go through the assets in the scene that could be emitting light and positioning some point lights at them. The game instantly looked better. (Also helped that I found a better camera angle that showed the assets a little more). So I started positioning more and more of those assets that could be emitting light and filling the level with different colored point lights.
After it was all populated with cool lights,I started messing with some Unity Pro Post-processing effects, and I was pretty happy with the results. On this screenshot it looks slightly darker because it’s farther away, but you can see the whole scene in there. You can click the picture to see it in it’s full resolution.
Now we needed a Menu Scene and a Game Over Scene. We knew we wanted to make it outside the body, so it would be something completely different. Since the game is beneath the surface… we need at least to start outside! Even though it’s a completely different scene, I still manage to reuse some of the assets. The grass in the cemetery is the same “arteries/veins” grass that are inside the body. The tubes that connect to those bags are that first tube I rigged to create the veins/arteries. The thing that hangs the bags also come from that first rigged tube. The bags, bed, pillow, monitor and tray all come from a Subdivided Cube. The guy I did have to model it from scratch, I pulled up a cylinder and modeled his face. He doesn’t have a body at all, just a piece of shirt and that’s it. The sheet is a plane that I pulled the mesh around to cover him.
With all that done Sebastian asked if he could have some animation for those scenes, so I dropped some joints in there and animated directly without properly rigging, since it’s not much motion.
Now we had 3 hours until the end of the jam, and I was pretty much free, the only heavy workload was with Sebastian since there was still a lot of bugs to squash and new features to add. So we decided it would be a good idea for me to work on a Second level.
I started by doing some Hue & Saturation changes on the walls and floor, and found a cool blueish/purpleish point that looked good in the level generator. We wanted this level to be bigger, and have 2 opposite enemy spawn points, for extra difficulty.
Sent him this quick painting over the generated level and he liked the shape so I started working on it.
Since I had the first level already with all those cool pieces put together I just copied it over, moved it to the right of the level, deleted all the walls and floor to leave only the decoration. Then I started pulling pieces out of there and placing them in the level, it went by WAAAAY quicker than doing it for the first time. But of course I also added some new combinations of things to make things more interesting. The result is that the level 2 looks even better than level 1 (at least to me). Which is a funny thing, because when you see how good the level 1 looks, you might think it’ll just look the same from there on, but you get to level 2 and it looks so different, and better! So it’s a cool little surprise for the people who make it this far
And that’s it, that’s how the art for this game was made Sorry for all this text, and all the heavy images. I thought this would be some nice/fun information to share.
If you would like to know more be sure to check Sebastian’s Behind the Scenes video.
Also there are my Art Creation Timelapses where you can see me actually doing everything I talked about here:
https://www.youtube.com/watch?v=zdEAC3X4zN8 https://www.youtube.com/watch?v=xBYieapEfgQ https://www.youtube.com/watch?v=UQDtm_DiAjU
And of course, if you haven’t already, please play Infection \o
Busy adding and fixing stuff on Super Landshark Missile Attack for a post-compo version (all ya’ll input has been super valuable and I couldn’t wait to get Landshark sexy :P), and I managed to fix the choppy bullet time……. But then a GLORIOUS BUG reared its head Hahaha
I love it when things go wrong GLORIOUSLY. It’s amazeballs really, wish I could keep it so
Who else is working on post-compo updates?
I wrote a post mortem for my game Coffin. Instead of writing here though, I posted it on my personal blog. Enjoy reading it! If you’re into reading post-mortems.
Yay! We’ve completed our first game together and we are so happy!
Big thanks to Ludum Dare for giving us that competition spirit, which in turn motivated us to complete at least ONE and FIRST ever game. You can download and rate it by going here <Link>. OST also available as free download!
With love to game development community, Suurin and Andy Ion.
It’s exactly what it sounds like. A simulation of what it’s like to be an ant.
I’m really happy with how it turned out. Usually I focus more on programming with my games, but I ended up spending most of my time on the artwork for this one. I didn’t really have any time to implement real gameplay. Right now the only thing you can really do is explore and climb on stuff. Also, you can go down into a pretty awesome anthill (hence “Beneath the Surface”)!
Made with Unity free, Blender, and Photoshop elements. I also used my DSLR camera to take pictures for all the textures.
The whole development was streamed and recorded on twitch.tv/eteeski. All 25 hours of it (I had to sleep, couldn’t work during the full 48 hours haha). I’ll be uploading the recordings to Youtube.com/ETeeskiTutorials