¡Paella Va! is an online multiplayer restaurant cooking game made for an university subject called Projects II.  We were meant to create a videogame using SDL2. The main objective of this project is to use an engine lacking an editor. In this page I will explain the most interesting part of my contribution to the project and its later presentation at Guerrilla Games Festival 2022. More information about the game can be found on GitHub!

Input Handling

The class InputHandler of Paella Va had to deal with the online serialization of the current player's input state. I built a virtual controller with all the inputs the game needed, and stored its values in bitmaps, or bool vectors. When the player presses a key in the keyboard or a button of a controller or clicks the mouse, I mark the corresponding bool to true until they release it. To detect if the key was just pressed, I stored the previous frame state. 

It didn't support joysticks, as it translated an axis input to a true in one of the 4 directions' bit.

Using Tiled

Tiled is a level editor we used to build the scene. Tiled allows you to build a map with your tilemap and create objects with custom parameters in it. When we load the scene from code, we create a texture for the background pasting every tile in its place and then iterate for every object in the scene and create our furniture in the desired position depending of the name of the objects. None of them had additional parameters.

Using tiled made iterations very fast and we could create 7 variations of the restaurant for every day of the week.

Enhancing game feel with tweens

We used tweeny mainly to give feedback to the player, for example to show what button in the menus have the focus, and also because it makes the game look nice.

Our UIManager stored all active tweens and updated them every frame until they where finished.

For example, when we click in the start button "JUGAR" we play the sound and the tween. And when the progress surpasses 20%, we change the scene to the host and client screen.

        auto mStartButton = new UiButton(mGame, "start", mPosIniX, mPosIni - mAumento, mWidth, mHeight);

mStartButton->setInitialDimension(mWidth, mHeight);

mStartButton->setAction([this, mStartButton](Game* mGame, bool& exit) {

sdlutils().soundEffects().at("select").play(0, mGame->UI);

mUiManager->addTween(0.9f, 1.0f, 600.0f, false).via(easing::exponentialOut)

                    .onStep([mGame, mStartButton](tweeny::tween<float>& t, float) mutable {

mStartButton->setDimension(t.peek() * mStartButton->getInitialWidth(), 

                            t.peek() * mStartButton->getInitialHeight());


if (t.progress() > .2f) {

//Start game

mGame->sendMessageScene(new HostClient(mGame));

return true;

}

return false;

    });

    });


mUiManager->addButton(mStartButton);

Making the trailer

We recorded a trailer to present the videogame at the university stage. 3 people of the group bought some ingredients and customes, made a real paella and served it at home. We wanted to perform how the game loop feels and reinforce our most powerful feature: the online cooperative gameplay.

Guerrilla Game Festival 2022

We went to Guerrilla Game Festival and met with lots of other game developers. There, people could chat with us and play ¡Paella Va!. It was super cool because most of them were pros! We tried to make contact with them and had so much fun!