Made a Game for GameJam

So last month I participated in a 48-hour game jam in my University. I was in a team of 5 people. The theme of the game jam was “You are villain”.

We discussed about the theme and decided that we should make it simple yet fun.

We wanted to create something that everyone can relate with. And what better game than the classic Pacman. We thought let us give our players the ability to control the ghosts. It sounded nice but how to go about it? Which ghost should we let the player control? Instead of picking one of the ghosts we picked all.

Yes, you read that right all of the ghosts could be controlled by the player.

But now it begs the question of how to control all of them? Let the user switch between them through buttons? That was one solution but we went nuts and let the player control all the ghosts simultaneously. Yep, we were going to let the player manipulate all the ghosts from a single controller.

We used Xbox controller and use left thumbstick, right thumbstick, directional pad and 4-buttons(A, X, B, Y) to control the ghosts. And another controller to control the player. So essential we made it a 2-player game with one person controlling the pacman and the second person controlling all 4 ghosts.

We were sure that people were going to go crazy figuring out the controls of the game.

Since Halloween was approaching we opted to give our game a thematic look. I created a pixel art characters as you can see below.

We made our pacman Van Helsing lookalike, hence PacVan (our title for the game). Our 4 ghosts were Werewolf, Zombie, Dracula and Ghost (yeah.. simple one).

Each of us designed one level, so in total we got 5 playable levels. The current game is simple and you can get it from here and play.

There are many features like Portal travel, Selective passing, Hide behind Grass, Time trial, etc. We have loads of ideas that can be incorporated in the game and we may implement them in the game some other time.

We got many compliments from players who played the game. It was pretty fun to watch them figuring out the controls and miss the PacVan by moving the wrong ghost.

In conclusion, people who were playing as ghosts won more times than people who played PacVan, despite the obvious fumbling with controls.

It was a great experience for me and I’d love to be part of such events in future as well.

Radial and Diametric Dimension

Like I wrote yesterday, I finished off the diametric dimension today and sent the PR today which has been accepted and merged.

And right now I’m working on improving them further like snapping the start point, i.e the arrowhead, to the entity (either a circle or an arc).

This will be achieved by calculating the intersecting point on the said entity, which can be the basis for snap-to-entity feature.

Adding a bit more

Even though my final project viva is near I’m still improving and adding on in eCAD.

I tried to correct the ellipse’s pasting problem but I guess I made a hasty commit which should have been made only after some testing.

Today I’ve implemented a radial dimension but haven’t send the PR yet, as it needs some minor improvements. The diametric dimension is almost similar to the radial one, so it’d also be done by tomorrow.

Shooting Down Issues

Apart from working on the Aligned Dimension, I’ve solved two issues today that have been pending for some time.

The flickering issue of ellipse was solved pretty easily, just had to set the code at the correct place.

While the Arc’s selection issue was quite prominent since it has been implemented. Its shape wasn’t set properly. And earlier when I tried to solve this, I always thought I need to do some more calculations to properly define the shape without those minor glitches. But today when I started working on it, after I assigned myself this task once again, a bulb went off in my head. Why do I always over think and try to do everything in complicated way? It was super easy to do with QPainterPathStroker.

Vertical Dimension

I’ve added Vertical Dimension in eCAD today and also made some changes regarding text and arrow.

As far as linear dimensioning is concerned, horizontal and vertical has been done.

Aligned dimension should not be much different and I’m hoping to be done with it by tomorrow.

Next, radial and diametric dimensions are lined up and I’ll be working on them side by side.


After implementing the initial snapping, I’ve tasked the rest of snapping to Kamalpreet. She has implemented Snap to End Points and Snap to Center so far. And is working on Snap to Middle with Snap to Entity coming close behind.

Meanwhile I was busy with trying to do the dimensioning, which I had successfully completed last week but with few glitches and errors popping up now and then.

And today I sent the PR for Horizontal Dimensioning and now working on the Vertical for which I’m still setting up the bounding rectangle.

Snap to Grid

I’ve implemented Snap-to-Grid feature in eCAD today. It was quite easy, just had to round off the mouse position in the scene to the grid points.

So I created a new function to calculate the round off and set a temporary point in the eventFilter() so that it will calculate according to the grid size.

And this temporary point has been used wherever the mouse’s scene position has been used.

Now I’m going to implement dimensioning.

Mouse Axes Disappeared

I observed one little issue, that mouse axes disappeared when we are zoomed in. So on my code walkthrough I saw that the QGraphicsColorizeEffect significantly lowers the performance of QGraphicsView, in short the whole eCAD.

And when I removed that effect the performance shoot up as well as the axes appeared.

So this color of axes must be set in some different manner and for now this issue has been resolved.

Now i’m working on Snap-to-Grid feature that eCAD lacks.

Solving issues back to back

We have been solving eCAD issues back to back. I’ve also added mouse-axes preview while drawing entities which is quite useful for a user working in a CAD environment.

Once again I used eventFilter function to draw those axes preview. And I had to use QGraphicsEffect on them to give a different effect to them.

Solved three issues as well.

  1. Corrected the Menu Check for both script and console widgets
  2. Fixed the issue of grid option for respective view
  3. Changed Origin from qgraphicsitem to a background item.


New Bugs

Every time I work in eCAD, it seems I find one or another bug. Maybe that’s because I’m always on the lookout for something to improve in it.

From last 2 days Kamalpreet and I have been working on correcting the coordinates of our CAD. It has the coordinates as ‘computer graphics’ with origin at the top left of the screen. But we usually work in a CAD software with more ‘drawing’ or ‘graph’ like sense with origin at the bottom left of the screen.

And today we solved it. We had to scale the scene by flipping the y-axis and then two of our entities, i.e Text and Image, had to be flipped as well.

I also solved an issue of empty text items saved in the scene.