Crytek entered four teams into this year’s Global Game Jam. Check out game four, Haven, and find out about the game jam experience in our interview with the team who made it.
CRYENGINE was a proud sponsor of Global Game Jam, the event where teams join together to create a game in just a weekend. The theme for this year’s game jam was “What home means to you,” and today we’re looking at Haven, a game where you explore a skyscape, created by one of the teams at our HQ in Frankfurt.
We caught up with Junior Renderer Engineer Ali Salehi, Junior Game Programmer for Hunt: Showdown, Daniel Bortfeld, Jeremy Wade, Technical Community Manager for CRYENGINE, Lukas Keil, Junior Audio Designer, and Gabriel Arlauskas, one of our interns.
Hey everyone. What did each of you do on the team?
Jeremy: I guess you could say I was leading programming on the team. Although I didn't need to lead so much but rather distribute tasks to the other programmers. I took care of creating the code that controlled the animation and movement of the character, which included a 'gravity' system that could easily be controlled by the level designer Roman, as well as integrating the components created by Ali and Daniel into the code base. I also handled the packaging of the game when the game jam was near its end and fixing any issues that came up that I could find.
Ali: I was one of the programmers and implemented the camera system.
Daniel: I was a programmer working on the AI.
Lukas: I worked on the music and did some SFX together with Gabriel, who did the main SFX and audio implementation in the game.
Gabriel: I did the audio setup, implementation, and most of the sound effects, alongside Lukas who contributed the beautifully fitting music.
Roman: I did the art direction and technical art, I modeled the character in the engine with our designer tool, exported it, rigged and animated the character in 3Ds Max and then exported it back to the engine. Also, I’ve created the clouds and environment.
How did you come up with the concept for Haven?
Daniel: First we held a brainstorming session and explained to each other what home means to each of us. We threw in different ideas and eventually came up with the idea of a haven as a safe place for sailors, except in the sky!
Jeremy: We all had our own opinions of what the theme meant, and from there we took one idea after another from each member of the team. We had an extended brainstorming session that resulted in a more story-driven type of game with elements we liked from games that we had played before.
Gabriel: Collectively we decided that home is what you make it and that it changes with every life decision, sometimes even having to leave it behind. With this abstract idea in mind, we tried to create an experience reminiscent of a long journey.
Ali: A game we all loved, Journey, influenced our concept for Haven.
What advice do you have about creating a game in such a short time?
Ali: Keep the scope reasonable and achievable, and account for things that could go wrong. Also, keep track of everything so you can prevent those ‘panic’ moments in the final hours.
Daniel: Don’t think too big and make sure that everyone gets a suitable and achievable task. For a game jam, my goal is usually to learn something by taking on tasks I don’t have that much experience doing. That also means that the result will probably be far from perfect, but the important part is that you achieve something for yourself and grow with the challenge. And most importantly of all, have fun and don’t stress yourself! It’s not a competition after all.
Jeremy: The scope is what will determine whether you finish the game, or even have something resembling a game. Don't get hung up on making things perfect. If something doesn't work one way, find a workaround. A weekend is not long enough to implement entire systems; just get the code down. Several times I wanted to do things just right and ended up wasting time. Every game is like a story with a start, middle and an end. Get the start and end down flesh out the middle as much as possible.
Lukas: Have a strong idea and a strong core and establish one gameplay idea you’d like to get right. It is too easy to overload your plan, and I can’t stress enough how short 48 hours is! You often see teams have a big vision, but even though a vision is good to define a goal, if it’s too grand it can be too much for a weekend. Build a working prototype as quickly as possible. It doesn’t matter if the prototype looks good, just have a base and then expand your idea, instead of doing everything at once.
Gabriel: Limit yourself to the core features and values that are needed to establish your unique idea. At the beginning of making a game, there is not much to look at, so constant communication throughout the team is important to find out what your game will evolve into beyond the early stages. Build a functioning prototype as soon as possible because that’s the biggest milestone to motivate your team and get rid of the initial chaos of everyone working on different tasks.
What features in CRYENGINE helped you make the game so quickly?
Ali: I used the component system which allowed me to implement different parts as separate components. CRYENGINE has a huge math library that helped me focus on the high-level features of the camera system rather than implementing the basics.
Jeremy: I used the animation system to trigger fragments that were set up in Mannequin which was extremely easy to do on its own. For the gravity platforms, I used a simple raycast and a custom surface type assigned to these platforms to determine if "Gravity" would be enabled for the player if they were above one of these platforms.
Lukas: The way CRYENGINE works with audio is great because you can add and work with sounds at runtime and build/integrate new soundbanks from your middleware seamlessly.
Gabriel: As an audio guy it is crucial to know most of the tools other departments are using so you know what you can achieve and what you can skip, avoiding unnecessary extra work. CRYENGINE's Audio Translation Layer offers a good implementation for audio middleware (in our case Wwise) which makes it possible to design and set up audio parallel to the other team member’s work. We could pretty much design everything on my machine and then share to the final build, without having to deal with different versions or unfinished features beforehand.
Roman: It was easy to implement a character with animations and set him up as a player character, the overall look and atmosphere of the game was done very quickly with the environment tools that the engine provides.
What was the best part of your game jam dev experience?
Lukas: It was great to work on such a fast-moving project! It was a big adventure for me to have that kind of pressure because when time gets so tight, and the project is so small, you can take a very rogue-like approach. Many things got a bit ‘hacky’ or didn’t make it to the final game the way I intended, but even that didn’t stop anyone from creating some awesome things over the weekend. Generally, we just had fun!
Ali: Seeing a game develop features so fast and in parallel by our team members was really nice.
Daniel: The best parts were meeting people from different teams, having fun, and learning new stuff.
Jeremy: The people! We all worked so hard to finish the game, staying over at the site and working long into the next day. It was a vibrant atmosphere full of passion for making games which was truly awesome. I would definitely take part in another game jam.
Gabriel: Seeing everyone’s projects coming to life is just amazing. The beauty of creativity lies in its progress. Also, finding a common idea and crunching with a group of friendly strangers was a lot of fun and got only better over the weekend.
Roman: It was amazing to work with my team and just create something, brainstorming, sharing ideas and having an incredibly good time doing so!
What did you find most challenging about the event?
Ali: Deciding on the parts of our vision that we had to exclude because of the lack of time.
Jeremy: I would say the most challenging thing for me was the time constraint.
Lukas: I don’t know if challenging is the right word for me. I didn’t panic or feel like I’d have problems getting the stuff done I wanted to do. I went into the weekend with the intention to have a lot of fun, and we certainly did.
Roman: Time! I think many of us wanted to make their task as good/perfect as possible and that consumed time, which is fine! The experiences we gained and the fun we had was totally worth it. I think it was more important to be working on something cool and learn new stuff, rather then actually finishing the game until it was well polished. For me at least.
What would you have done differently?
Ali: Implement the core features of the game first, then iterate on them!
Jeremy: The planning phase. We had a whole concept worked out that we wanted to pull off, but in the end, it proved to be too much. Next time I will make sure we have a start and end to the game first, and then fill in all the rest.
Gabriel: Using a simple management tool or a roadmap could have helped us. We were putting pieces together at the end rather than working on a main build, so there were some issues. However, I’m still proud of our final version!
Roman: Time management, and I think the idea was a little to ambitious but besides that not much, I really liked the whole experience.
Full Credits for Escape Home:
Ali Salehi, Junior Renderer Engineer
Daniel Bortfeld, Junior Game Programmer for Hunt: Showdown
Gabriel Arlauskas, Intern
Jeremy Wade, Technical Community Manager for CRYENGINE
Lukas Keil, Junior Audio Designer
Roman Perezogin, QA Tester
Don’t forget you can check out Homebound, Escape Home, and Get out and Play, our other entries into this year’s Global Game Jam to discover more tips. We look forward to your feedback in the comments, on the forum, and via Facebook and Twitter, and don’t forget to join the community and CRYENGINE staff members over on Discord.
- Your CRYENGINE Team