Perhaps some of the most common questions I hear from other developers are about the workflow to use when working with Unity, especially when they go from working alone or in teams of two or three people into working on projects a little larger with more than six or seven people. In these larger scale projects it is very likely that at least two people have roles that involve working on the same aspect or area of the project at the same time.
"Hey guys! Game Designer here! Name's Prakash Mandujano.
I'm here to talk to you about the current state in Bitup's game design.
The first thing we tackled this time when thinking about the game was progression.
We had a bunch of stuff (like upgrades and the general direction of the game) already established from previous iterations, so the next big step for us was deciding it's genre….
es, it's true, we are developing Bitup again, this project that we love so much in the studio and that we have struggled to push for years because we had our hands full with other projects. A couple of months ago we decided to give it a new opportunity (a better opportunity, I think) and now with a new scope, new mechanics, different technology and starting from scratch with a renewed team.
Hi everyone! Martin Here. We are still here! Although we haven't been able to upload as much content as we did a couple months ago, BitUp is still coming along. Thank you for you continuous support. We are working on a couple really interesting things and hopefully we will be able to share them with you in the near future.
Without further ado, let’s here it from Marlon, the newest member of the Cosmo team.
Hello everyone, I'm Marlon and is time to talk about a few upgrades we have been working on forthe Bitup universe.
We want to create a lush, colourful and vibrating universe, in which the environment surround you. To avoid occluding Bit and the “lame codename enemies”, we created a new shader that takes care of it, plus it gives a nice Matrix effect to the foreground objects.
Also, we added a more dynamic camera! Now the camera has nice “follow” effect. This new camera allows to get a better view of the battlefield, and helps you locate those hidden collectibles :)
And yep the shrine is a checkpoint.
We have a quick update this week, but that doesn't mean is small! A lot of you have been asking us to upload a sneak peak at the game in motion. Here we have something for you to scratch that itch. Remember this is all a work in progress and there's a lot of things that can change between now and release :) Music by Morusque and sound FX by Etienne Marque
The harbinger of death, the architect of the pain on your soul, he whom feeds on dreams and hopes… Heavy Mini Boss 1! (Continuing the streak of lame codenames).
This is the mini boss encounter that will be featured in the demo we are currently working on. We wanted to design include a hulking enemy that used swift attacks, making sure you put into practice all the skills you acquired trough the demo. I love how the enemy turned out, and I’m sure you will like it as well (although most likely you will hate his guts when fighting him).
This enemy is brought you by long Dark Souls sessions and the constant refinement of his movements. This bastard sure is special :)
Yours truly, Me
(Josh, Lead Animator)
It’s time for animation, blood, and suffering!!
I’ve returned from the shadows! Me, Josue, the animator, present to the world a brand new enemy in the BitUp universe! The mighty Swordman! (Yup, we still suck at naming work in progress items :P)
You have already met the Minion a couple moons ago, and you got a glimpse into the behaviour we want enemies to have. We don’t want moving cannon fodder, as we are making enemies have a purpose, a mission: put an end to Bit by any means necessary.
By taking Dark Souls, my newest addiction, as a reference, I wanted the attacks to be “felt” by sight, so you can prevent the force of the impact and decide if you want to evade or block. By having good visual cues I expect players to have an window of opportunity into defeating them… although I hope they rip you apart :)
Enough for today! I won’t spend any more time with you mere mortals! I have and Archer to polish!
All yours, me.
Video not loading properly? Click on it. We are still figuring out how to embed .WebM the right way
Today’s post is about the many of the approaches that we took regarding lighting, level design, and environment design.
First, lighting; during the past couple of months we worked using a static lighting approach, using only lightmaps and avoiding any realtime lighting in order to achieve better performance.... Well, that wasn't as optimal as we thought. Even if the artstyle of the game looks “simple”, it’s really challenging to make it look as clean and nice as the concept art. Using a full static lighting setup demanded a lot of resources, and by a lot I mean more than a thousand lightmap textures just to have decent looking lighting. This wasn't acceptable, so I started experimenting.
From static lighting I went to full dynamic. I was shocked at how well unreal Engine 4 manages dynamic lights, and how everything looked clean and crisp. However, the scene lacked indirect lighting. When I started to simulate all the indirect lighting of the scene, it looked very good but there was a noticeable performance hit due to the quantity of lights used in the scene, so I moved on.
Then I tried a hybrid system, the “stationary” approach, and I instantly realised that this was the one. Yay! Now I had the dynamic direct light and the indirect baked light, it was perfect. This approach let us have real time shadows, and the indirect lighting baked into lightmaps. Since the lightmaps only contain the indirect lighting, we got rid of the ugly artifacts and blotches from the full static approach, plus it takes much less time to bake. This is why we are using the hybrid lightning model for BitUp from now on.
Depending of the type of game, you will need to experiment a little (or a lot) with lighting, until you find the right workflow. The artstyle of BitUp had a huge impact on this part of the process for us, as it turns out that a lot of small non-uniform cubes make it a living hell to use static lighting.
Thank you for reading, and please share if you like it!
Hi everyone, Gabriel here, today I’m going to give you some more insight about how we are giving life to Bit. Right now, we have been testing a lot of different game features and skills that Bit have/will have, and iterated a lot on them to make them feel right, i’d say we are now at 70% from completing all of Bit’s abilities (at least the ones that are in the table right now XD).
We like to describe BitUp as an “action exploration adventure”, and that basically means that you will have fights, investigation and platformer-ness (I hope thats a real term) and for me that means that we need to handle very different states.
I am using a simple state machine implementation to handle all Bit code, all the states have three different functions: OnStart, OnUpdate and OnEnd. OnStart handles that specific state initialization code, things like triggering an animation, changing physics modes, applying input changes and so on. OnUpdate gets called from Tick every frame and OnEnd gets called when a new state is pushed.
Changing states is done via different events like input events, landed, take damage and others like that, when a state is pushed, first it needs to see if there’s a valid transition from the current event to the new one, if not, it is ignored, and if there is, the transition calls OnEnd from the last state and OnStart on the new one.
I like to implement states as function pointers that change to the current state functions. that allow me to just call the current function from the pointer in the Tick. To be able to do that in a UCLASS I needed to use some special sauce that I extracted from this amazing (and short and easy) post from Rama (thanks a lot Rama!). That’s why in the Tick function all you need to do is this:
// Perform update based on the current state (this->*(OnUpdateStateArray[(uint8)CurrentState]))(DeltaTime);
Currently my state machine in the code matches the animation blueprint state machine almost entirely, so I think an improvement could be somehow to automatically handle both by the same code, and while I can easily control all animation from code, that doesn’t allow Josh (our animator) to see and test the animation changes and flow visually in the editor, that’s why I need keep the animation blueprint separated for now, even though that has been creating some very specific bugs about animation changes that happen in the same frame (I’m looking at you animation montages!).
So that’s it from now, I hope you all can find something useful here! FYI we have a forum post about BitUp here in the UE4 Forums so if you want to know something or ask me specifics you can do it there or in my twitter!
Thanks and see you later!
Hey everyone! It’s Josué, and I’m in charge of the animation department, and today I have control over the blog. That means I can say whatever I want, and I’ll start by saying: “banana”.
Because there a tons of work left, I will show you briefly a sneak peak at one of BitUp’s enemies and their behaviour. Today, I’m proud to announce to the smallest of the bunch, bearing the codename “minion” (We are geniuses!)
The minion getting ready for a ground base attack
Even if this character is one of the most basic enemies in the game, I didn’t want it to come of as dumb. I wanted it to have a very freaky personality, something that would make you hate its guts. I watched many videos depicting monsters for reference, both in cinema and games, but I mainly ended up looking at the behaviour of Silent Hill’s enemies. That game me a clearer picture in terms of how I wanted the minion to feel like. In this case, the minion can either do a ground or aerial attack. By looking at the direction the sawblades come out, you can predict its movements and approach accordingly. The result is a frenzied enemy without much regard for its well being.
And its aerial attack variant
However, the secret sauce was discovering the most epic, magnetic, and awesome metal band ever…
Believe it or not, listening to Babymetal was indispensable to me to animate this particular enemy: something in the music clicked for me and fuelled the process, making it feel like I envisioned. So, thanks Babymetal! This enemy was somehow inspired by your music.
I’ll leave you guys with some of the animation cycles I prepared for the minion. As for me, I will get back to work on polishing some of Bit’s animation while listen to AC/DC. Have a great day, and don’t forget to eat your veggies!
Sincerely, and all yours.
SUGOI KAWAI METARUUUUU!!!!!
I’m Adriana, lead character artist for BitUp. This time the boys are away from the blog, so is my turn to speak about the process of creating the inhabitants of Bit’s world. The process of creating a character for a videogame is a huge responsibility since characters have an important role in telling us the story of the world.
Before beginning any modeling, it’s important to analyse the concept provided by the art team and clear any doubts about the design in order to plan how to tackle the character model. After doing that, it’s time to start doing a blockout model to try to get the proportions and main shapes of the character. At this stage topology doesn’t really matter since it’s an exploration stage where the goal is to translate the concept to 3D the best possible way. For this I like using Zbrush since it’s easier to go start pushing and pulling shapes quickly, using Dynamesh if I need to change the shape more until I get a look I’m happy with.
Since we are using a 3d pixel style for the game, I need to refine the model and get the hardsurfaces we are looking for. For this I create a Decimated version that I can send to Maya for the retopology pass of every piece of the model. Then I take back the repologized model to Zbrush in order to add the small details such as scratches and bumps of the armor of Bit. Once I’m happy with the sculpt I take it back to Maya in the lowest subdivision to prepare the final game model, some of the pieces may need some rework but it’s mostly removing the edge loops so it’s a quick process.
Once the modeling is done, we have the animation team do a quick check up to make sure the model will work with the range of motion they are looking for the character. Finally, it’s time to unwrap the UVs and texturing in Photoshop.
Thanks for reading, and keep checking regularly for more updates. We love hearing back from you.
Have a great weekend!
Hi everyone! My name is Mario Ruiz and I’m charge of designing BitUp’s look and feel.
I’ve always thought that pixel art and impressionism have a lot of similarities, but today I want to talk about one of those characteristics: using color in it’s purest state.
Georges-Pierre Seurat, one of the most renowned neo-impressionist painters, avoided labelling his work as pointillism in favor of Chromoluminarism: the separation of colors which interacted optically. With very fine strokes over the canvas, the colors would combine in the retina, bringing the painting alive at the spectator’s eyes. Pixel art works in a similar fashion: with a limited palette and canvas size, pixel artist created some of the worlds we remember fondly.
With BitUp we always came back to the phrase “Picture Seurat painting Chrono Trigger’s worlds”. a pixel world seen though the eyes of the habitants of this world, alive and natural, but we didn’t want to constrain ourselves with the “rules” of pixel art. Our first explorations felt barren and limited, very far from the lush and vibrant look we wanted. I started experimenting by using triangles, shading, shifting vertices, and rotating shapes in order to find a more organic look and feel.
By using the logic of Chromoluminarism we started painting faces with different shades and expressive color combinations in order to create a look reminiscent of pixel art, but with an organic soul.
And that’s how the look and feel of BitUp was defined. I hope you like it as much as we do.
Hi, I'm Roy, Cosmogonia's co-founder and Lead TA in BitUp. I’m taking control of today’s post (we are still keeping Martin out of this hehe) I want to talk about the visual aspect of the game, some tip for starters and and finally show a sneak peak of how the game is looking.
First I want to talk about the change from Unity to UE4, as Gabriel said, one of the main reasons for the change was that we were more used to work whit UE than Unity but from the artistic point of view, UE4 became incredibly easy to use.
We use custom shaders, making those in unity (for an artist like me) can be a road block when you want to iterate faster, this because you need to code every custom shader, and if you don’t have shader coding knowledge, the process can be very painful. There are some 3rd party plug-ins used to create shaders with nodes, but since those are 3rd party, those plugins don’t work well when you are working for console, since consoles have some custom instructions or different variables names, in the end you need to go to the shader code, and modify it, every single time you make a change in the node editor… WHY!
In UE4 this is no longer a problem, you have the material editor and almost everything there work perfectly in consoles, without the need of modifying the code or using external tools… WIN!
The custom shader that we built let us control a lot of different features, like a color interpolation measured by the height of the objects, starting point of color transitions, textures size, Fresnel and even the color of the faces depending on the direction they are facing to.
I’m not using anything special about lighting but here are some tips that may be useful for some of you:
1) Start lighting you scene until you have all your materials working properly, UE4 works with PBR and for this reason the look of the essence can be affected drastically by your material. Create a test scene where you can test the material in different lighting situations, once you are comfortable with, then you can star lighting you final scene.
2) When you are lighting your scene, you want to get rid of the default environment color because you don’t want this light to affect your lighting (can be done in the world setting, make it black), then start by the smallest light, doing this you can easily see how that light affects the ambience, check this with every light, then go for the next bigger one and go on until you reach the main light.
3) USE THE LESS LIGHTS POSIBLE!! Doing this, you can have a faster light mapping process and more optimized scene.
4) Almost all your light should be static, if you need dynamic lights use the movable ones and try to have the less dynamic shadow caster possible.
For these scenes I’m using a Movable Directional light as main light for the sun and dynamic shadows, another 2 Static directional lights to give some color contrast and finally a skylight to fill the whole scene, you can see the contribution of every light to the scene below.
Well, that’s all for today, if you like it or find useful some of the tips, give us a like and Share!
Thank you for Reading!
Hi everyone! Gabriel here!
So today Martin is being held outside the matrix against his will while I take over the blog. Right now I am the entire programming force in project BitUp, and today I would like to give you all some insight into the first steps we have walked to be able to get things started, this is not a technical post and I hope everyone starting a new project can get some good information from it.
Last year, BitUp came to its first incarnation in the form of a little demo we did in Unity, this year we decided we would change from Unity to Unreal Engine for a handful different reasons. For me one of them is that I am much more comfortable working with C/C++ than in C# and while UE has a very different approach into making stuff happen, I have more experience with it and we felt it would be a better fit for the project. So yeah, it’s not so much of X is better than Y but you need to use what works better for you.
We have PS4 as a target platform, and one of the first steps we had to do was to be able to compile and test in that platform, I am really pleased to say that this process was very smooth compared with my previous experiences with UE3, thanks Epic (and Sony) for that! After having the engine running nicely, I started the coding tasks for Bit, but while doing that, we needed to set up another little thing called version control (yay!).
Our version control needs won’t be very over the top, we will have few people working in every area, but we needed something that could handle large binary files. We first tried to use git but our endeavour was fruitless, while I like it for source-only projects, it was hard to get it perfectly integrated with UE4 and our artists didn’t grasp the concepts of the system really well, so we thought it’s better to have something that all the team can use with ease and we looked back to perforce.
In our previous jobs we worked with perforce and once we got it up and running and connected with UE4 (to do so, just click one button, input settings and done!) we started using it seamlessly, you can almost forget you have it and work with no issues, yeah I know, there are no code merges so far but still it’s nice to have one less thing to care for in the future. Ah, i forgot, also FREE!
With all the ground covered, coding for bit started, in our last demo I did a custom controller to handle Bit, this time I looked at UE’s Character and Character Movement Component. There’s already a lot of good code in those classes to help me handle events and different movement modes, so instead of building my own again, I just subclassed Character Movement Component and started modifying and/or overriding the already coded functionality it has to be able to meet our needs. Right now we have implemented all the basic movements that Bit will be able to do, all with nicely exposed parameters to tweak, and some special extras that will be revealed in the future. If you don’t need drastically different or specific behaviours, with UE I find it better to use all you can and just add/modify the strictly necessary, there’s always the need to improve and create new things in the programmer’s heart, but also I prefer not to reinvent the wheel a lot and really concentrate in the things that will set us apart. For now, we are not in that part of the picture yet :simple_smile:.
Thanks for reading guys! and while this post is somewhat long, I expect next programming entries to be longer so beware! XD.
Bit is running and jumping nicely in UE4 in our target platform, and if you are starting a project, do the right thing and setup version control!
See you guys!
Hi everyone, Martin here. This week we are proud to share some of the progress we have been making regarding character animation.
When we started brainstorming what we wanted to convey with the animation, one of the first things that came up was that we wanted to make strikes meaningful. While quick, machine-gun like strikes with little feedback are visually appealing, we felt they lacked substance. The more we explored the concept of making strikes meaningful the more appealing they became. “More Samurai Shodown, less Strider” we said. With that in mind, we started designing our animations.
Another key aspect of the animation design was Bit’s backstory. Alone, on the run, and always outnumbered, we wanted to reflect a certain savagery and uniqueness in it’s fightstyle, avoiding a “trained by the book” look.
Regarding the animation process, Josh, our Character Animator explains:
As alway, we thank your continuous support. If you like what you see, please, share our content. We love getting feedback from you guys. Spread the word, we deeply appreciate it.
Over and out!
Hi everyone! This week we are bringing you a quick look at Bit’s new 3D design. The team is hard at work building a playable demo of BitUp, and there are lots of cool stuff coming in the following weeks. Make sure to keep an eye out!
After Mario finished Bit’s redesign, it was time for Adriana to translate his design into 3D:
As usual, we would like to thank everyone for their support. If you like what we do, make sure to tell your friends and share our progress. We deeply appreciate it.
An update is long overdue, don’t you think?
The past couple of months have been some of the most interesting regarding Cosmogonia’s growth as a company. Right around November last year, a very interesting set of events unfolded that kept the team busy in order to set to stage to bigger things.
Big projects require big partnerships, and today we are proud to share two partnerships that have been brewing for a while: First, we are proud to announce that we have secured our first round of private funding! This funding will allow us to focus our development efforts and strengthen the company.
Also, we are proud to announce that we are joining forces with our friends at Elevator Games! We are excited to work alongside the Elevator Games team, as we found in them a likeminded partner with experience who shared our company’s vision. We will go in depth about what this partnership entails on the coming weeks.
Early feedback is something we actively look while developing BitUp. We have been showing our small tech demo to industry peers and potential partners, and the response has been really positive. This process allowed us to validate what’s working with our vision, and focus efforts on improving other areas. After collecting the feedback, we returned to the drawing board and we started to work on improving on what we built.
Although we were happy with Bit’s first iteration, we still had some lingering doubts regarding his look. Mario Ruiz, our Art Director, explains:
We will be updating this space regularly with news and updates about BitUp’s development.
On behalf of the Cosmogonía team, thank you for your support!
PD. Contrary to the rumours that Mario has been spreading on the office, we will NOT be giving out Bloodborne copies to employees as perks.
Hi everyone! Martin here. Here’s a little recap of what we’ve been doing for the past couple of weeks:
SCEA LatAm DevSummit 2014 was a success! Definitely the secret best gamedev event ever. The people, the setting, the talks, the meetings… An amazing experience overall. We are able to show the early demo to different publishers and members of the SCEA team and the response was very positive. We have ongoing conversation with publishers regarding our plans with BitUp, and hopefully we will be able to share news soon. Thanks to everyone who make this event possible, and greetz fly out to all the LatAm devs who attended!
Roy, Dorian, Gabriel, and me are going to be attending the EGS Developers 2014 at Mexico City. Not only that, but I’ll be giving a conference on what has been our experience building Cosmogonia from the ground up, what challenges we have been through, and a couple of tips for devs interested in building their own company. Make sure you reach out if you’re around the event!
Juan Pedro delgado, our Narrative Designer, has been working on the foundations of BitUp’s universe and storyline. Over the course of development, we will be including quotes from the characters in some of our blogposts.
Things are shaping up! We’ll keep you guys posted.
Hi everyone! I’m Martín Meléndez and I’m speaking on behalf of everyone at Cosmogonia. We are proud to announce BitUp, a side scrolling, exploration Hack-N'-Slash game in a Cubist-Impressionist world. A game kept hidden by its mythical creator, while its protagonist looks for answers.
I’m writing this just as we are wrapping up our first demo running on PS Vita hardware and cutting a small teaser with have prepared for the world to see. We are doing this in order show the game at the SCEA LatAm DevSummit 2014 event in Los Cabos, Mexico.
This is a very important day for everyone at the team, as this public announcement will be the culmination of many years of brainstorming, months of planning and building the studio, and 6 weeks of intense development. Hopes and dreams of many are being crystallised into this.
Even though this is only a very, very small slice of the whole cake and there’s still an uphill climb ahead of us, having the opportunity to share the work we have being doing means a lot.
We will update this space with news and insight about the development process. We want BitUp to be built based on YOUR feedback. So check back regularly, OK?
Remember to follow us and like us in order to keep in touch.
This is only the beginning.