Header image
banana4life

HOWTO: Employing Minecraft Players as 3D Artists

posted by pschichtel | 28 April 2021
  • Step 1: Get a Minecraft Community.

    Luckily we at Banana4Life also have a small Minecraft community called Cube Island (German), which was eager to help out!

  • Step 2: Setup a Minecraft Server with a flat world.

    Simply download the official Minecraft Java server and set the following values in the server.properties file:

    level-type=flat
    gamemode=creative
    
  • Step 3: Unleash your ~~minions~~ creative team.

    We placed a wall with the models we needed for the game, basically like a little kanban board.

All models build in Minecraft
  • Step 4: Get yourself a tool to export parts of a Minecraft world as 3D models.

    We used jMc2Obj which produces models in the Wavefront (.obj + .mtl files) format. The released version has a few issues with backface culling (Unity kind of requires it), so we fixed that. If you plan on using the textures from the export directly, make sure you use a texturepack you are allowed to redistribute. This is not the case for Minecraft's official texturepack. We were lucky again as a community member built their own texturepack. Alternatively you can also just use random blocks and skin them however you want in post-processing. Colored concrete blocks might come in handy here.

    If you plan on animating parts of the model, make sure the builders keep the sub-models separated or tell your exporter to generate a separate object/mesh for each block.

The exporter view of the Minecraft world
  • Step 5: Import the created models either directly into your game engine or into a 3D modelling software for post-processing.

    In Unity specifically we had to change a couple of settings on the textures and materials. Since we used a Minecraft-inspired texturepack we wanted to retain the blockyness of the texture and disabled texture filtering and enabled transparency from alpha.

    From your first model export, take the .mtl file and give it a generic name (we called it minecraft.mtl), since jMc2Obj generates a full material list (full as in it contains all Minecraft blocks) for each export.

    Before importing the .obj file, open it in your text editor of choice (it's a simple text-based format, so any editor will work) and replace the first line starting with mtllib by mtllib minecraft.mtl. This is important, so you can reuse the same materials for all objects later on, when you customize the material settings in Unity. When importing the .obj file into Unity, all materials will be embedded materials that cannot be changed. In order to change them, they have to be extracted using the "Extract Materials..." button on each model. The extraction will generate Unity material objects for each material used in that particular model, even if some already existed. You might want to delete the duplicates to avoid confusion later on (e.g. using find \( -regex '.* [0-9].mat' -o -regex '.* [0-9].mat.meta' \) -delete. This will also require you to remap the materials in the model using the "On Demand Remap" feature on the model. For naming you will need to select "From Model's Material" and you might have to play with the search option depending on where you placed your materials when extracting them.

    For the materials of non-cube blocks (e.g. plants, sugar cane, chains, ....) you might want to switch the material rendering mode to "Cutout" and for materials with transparency (all glass blocks, water, ...) you should use mode "Transparent".

  • Step 6: Profit

    Minecraft models in actual game

    If you want to see these models in action have a look at Drillromantik, the entire sources including the textures, models and materials are all on Github.

banana4life

Legendary Legionnaire Winter Massacre - Post-Mortem

posted by bananafourlife | 13 December 2014

Hey fellow gamedevs,

We are a team of four german students. We name ourselfs “Banana4Life” and have developed the game “Legendary Legionnaire Winter Massacre” for the third ludum dare we took part in. I (Jonas) made a quick LetsPlay of it here:

http://youtu.be/P8tznk-l52E

You can rate and play our game here: Legendary Legionnaire Winter Massacre

But now lets get to the post-mortem. Like last time we didn’t have huge problems and got even more stuff done than last time. But lets start with what went right.

What went right?

  • The game was playable and apparently fun to play.
  • We all met up at one place and were really productive.
  • We developed a cool idea during the game. Things like unicorns and aliens were spontaneous ideas.
  • The graphics were developed steadily parallel to the code and thus weren’t a product of the last minute.
  • We implemented our core gameplay first and after that improved upon it.
  • We partly had a lot of features that we wanted to implement, but cut the right features at the right time.
  • We slept a reasonable amount of time (and weren’t completely destroyed after the weekend).

As you see the most important parts went right and I think we did a pretty good job developing the game this time. But we had some small problems anyway.

What went wrong?

  • We didn’t have the final idea from the beginning on and had a hard time with the theme.
  • There were a few graphical features I wanted to implement, like random props(grass, stones, …), that I did not have time for.
  • Not all of us could work on the game for the whole third day, because they had to go to university.
  • The rendering of the walls and floor tiles could have been solved better.

Most of the “What went wrong?” stuff could be solved with more time and maybe some more structured code on my side rendering the wall and floor tiles. (But it worked anyway)

What we want to do better?

  • Think a bit more before writing code. (maybe, maybe not)

So I think we have an action plan for the next time.

  1. Try long enough to come up with a good idea.
  2. Make the game.
  3. Play more games.
  4. Enjoy the internet fame.

I hoped you liked our short writeup.

Greetings,

Team Banana4Life

P.S.: Play and rate our game please.

banana4life

Music finally finished!

posted by bananafourlife | 12 December 2014

Hey Guys,

I am really desperate. Could someone tell me why I have in one post a cool media inclusion and in the next it won’t work. That’s really really annoying. :(

This time it was a challenge for me to create music which fits in the theme. But finally I am finished!

https://soundcloud.com/rahtainka/legendary-legionnaire-winter

Now I will focusing on the sounds and maybe stream a little bit.

Our stream: http://www.twitch.tv/bananafourlife

Greetings!

banana4life

Work in progress...

posted by bananafourlife | 12 December 2014

Hey Guys,

here an update. Our game has an name: Legendary Legionnaire Winter Massacre

Story: “A legionnaire had build a snowman.
Suddenly aliens destroy it.
Take your revenge!”

You could hear the beta musicversion on our stream: http://www.twitch.tv/bananafourlife

Previous screenshots:

image_2014-12-07_16-16-12 bild

Greetings :)

banana4life

Team Banana4Life is in!

posted by bananafourlife | 12 December 2014

Hey guys,

We are four students from Germany. It’s the third time we join the contest. Our last game at Ludum Dare 30 was Disconnect: http://ludumdare.com/compo/ludum-dare-30/?action=preview&uid=41477 . This time we will use following tools and technologies:

Programming Language / Engine: Java / libgdx

IDE: IntelliJ

Version Control / GUI: git / SmartGit

Graphics: GraphicsGale

Sound: Garageband

Streaming: OBS

Our stream will be in german language. You can find it at http://www.twitch.tv/bananafourlife . We have a shared twitter account https://twitter.com/bananafourlife where we will post when we will stream. Just follow us to see the hottest news about our streams.

photo_2014-12-06_16-48-59

Have a nice Ludum Dare 31,

Team Banana4Life

banana4life

Disconnect - Post-Mortem

posted by bananafourlife | 02 December 2014

Hey fellow gamedevs,

We are a team of four german students. We name ourselfs “Banana4Life” and have developed the game “Disconnect” for the second ludum dare we took part in. I (Jonas) made a quick LetsPlay of it here:

https://www.youtube.com/watch?v=-To3KiIhNrA

You can rate and play our game here: Disconnect

But now lets get to the post-mortem. We didn’t have huge problems this time, after we spend half of the time developing a game that we threw away and started over last time. But lets start with what went right.

What went right?

  • The game was playable and apparently fun to play.
  • We had a cool idea from the start up and didn’t change it later on.
  • The graphics and music / sounds were developed steadily parallel to the code and thus weren’t a product of the last minute.
  • We implemented our core gameplay first and after that improved upon it.
  • We partly had a lot of features that we wanted to implement, but we cut the right features.
  • We slept a reasonable amount of time and weren’t completely destroyed after the weekend.

As you see the most important parts went right and I think we did a pretty good job developing the game this time. But we had some small problems anyway.

What went wrong?

  • We spent a lot of time working on collision detecting fixing it over and over but it never really worked.
  • At the end time ran out and the one level we had is pretty short.
  • One of our developers worked remote and wasn’t in one room with the other people which made communication harder.
  • Not all of us could work on the game on the third day, because they had to go to work.
  • The rendering of the walls could have been solved better.
  • Again the collisions were really annoying. Especially with syncing the player positions.
  • We didn’t play enough games

Most of the “What went wrong?” stuff could be solved with more time and maybe some more structured code on my side rendering the walls. (But it worked anyway)

What we want to do better?

  • Meet up all in one location
  • Maybe implement a little framework for the collisions or use an existing framework, because that would be a huge timesaver.
  • Take a day off the next day so everybody can work on the game the whole time.
  • Think a bit more before writing code. (maybe, maybe not)
  • Play more games

So I think we have an action plan for the next time.

  1. Prep a bit more by chosing a physics framework or something like this
  2. Try long enough to come up with a good idea. (Like we did this time)
  3. Make the game.
  4. Play more games.
  5. Enjoy the internet fame.

I hoped you liked our short writeup. Greetings,

Team Banana4Life

P.S.: Play and rate our game please.

banana4life

Ludum Dare 30 - Disconnect

posted by bananafourlife | 02 December 2014

Hey guys,

We are a german team consisting of 4 members. We just submitted our game “Disconnect”.

screenGame3

You play two players that are in two different worlds, but were connected by evil scientists. Now they can only move when the other person can move too. They only have a disconnector that allows them to wander around independently for a short time before the energy goes out. You need to find the endless powersource, developed in the same lab, to be able to disconnect and free the two forever. But be aware of the guards walking around.

I (Jonas) made a short made a playthrough of our game for you to watch:

https://www.youtube.com/watch?v=-To3KiIhNrA&feature=youtu.be

Have fun with our entry,

Team Banana4Life

screenshotCredits

Twitter: @bananafourlife

banana4life

Team Banana4Life is in!

posted by bananafourlife | 02 December 2014

Hello Ludum Dare folks,

We are four students from Germany. After entering Ludum Dare 28 with a slightly other lineup, we are now back in the game. Last time we submitted #YOGO Platform (The theme was “You Only Got One”). This time we will use following tools and technologies:

Programming Language / Engine: Java / libgdx

IDE: IntelliJ

Version Controll / GUI: git / SmartGit

Graphics: Photoshop

Sound: Garageband

Streaming: OBS

Our streams will be in german language. You can find them at jonasdann and pschichtel. We have a shared twitter account where we will post when we will stream. Just follow us to see the hottest news about our streams.

Have a nice Ludum Dare 30,

Team Banana4Life