Skip to main content

Game Jam #2 - Van Helsing (PART 1) - The Beginning

 


Game Jam #2 began on 13th October and lasted 3 weeks. The goal this time was "Shoot-em up" and the teams had been both expanded to average 4 per group and randomly assorted as opposed to being grouped based on those around you. My team consisted of the following:

- Programmer (me)
- Programmer
- Artist
- Designer 

Off the bat, we were able to come up with a very solid idea for our game: A side-scrolling platformer where the player can shoot 360 degrees to kill zombies. The player can only see inside a small aura of light around them and must rely on lampposts and other light sources as well as directional audio cues to navigate the level.

The other programmer, just like my last partner, had never used a game engine prior to this course. As such, we settled on using Godot for this project. The reason we chose Godot is because its proprietary scripting language, known as GDscript, is pythonic. This means it is eerily similar to python, but enhanced and integrated enough that it is a viable solution for game development. We also found from trying out the engine that it was relatively easy to understand.

No engine is perfect, though, and we later find its downside is in the lack of community support for the engine's niche aspects (more on that later).

Creating a 2D side-scrolling platformer with a double jump was easy, and I was able to set it up within a few hours. I was also easily able to get the gun object (which would be both the character's arm and gun) to point to the position of the mouse while remaining with the body positionally. Creating the zombies was also rather simple thanks to the pythonic structure of GDscript that allowed me to easily implement their functionality as shown below.

The first major hurdle in development came in the form of the bullets. Since the player could shoot at any angle, I needed to implement a way for the bullets to move "forward". For those less knowledgeable in programming, everything operates on an axis. In the case of 2D games, they are typically x and y. So as a programmer, I can control the bullet's x and y coordinates to make it move horizontally and vertically. This would be fine if the player could only shoot in fixed angles (such as up, down, left and right), however, making the bullets move in a 'forward' direction at any random angle in any random direction is a lot more complicated. And for my own sanity in the future, I am going to make an entire post about exactly how I achieved it for all to see.

But for now, here was the state of the game after 4 hours of steady development and 8 gruelling hours of trying to make bullets be bullets:

Goodbye for now!

-JDM


Comments

Popular posts from this blog

Game Jam #2 - Van Helsing (PART 2) - The Bullets

  (Bullet sprite by Nicolas Katsis) This part is solely on how I implemented the bullets shown in the video in Part 1. There are two parts to this split across two scripts. The first is its behaviour and the second is the spawning of the bullet. First of all, it's behaviour.   The first thing that occurs on spawn is that the bullet assigns itself to a group of objects known as "P_Bullet". You will notice in all the snippets of code that many of the variables and groups for this object are listed as "P_ something ". This is because we initially considered the idea of giving the player two different guns that they could swap between: A pistol with a higher ammo count and longer range but weaker damage, and a shotgun with a much higher damage but fewer bullets and shorter range. The P_ was a reference to 'Pistol' bullets and S_ was a reference to 'Shotgun' bullets. Unfortunately, due to time constraints, the Shotgun was never introduced. For those u...

Demigod - CSGO - Update 1

The 'player' with a cylinder to identify its front face As part of this teaching blocks assignment for my Coding & Scripting for Games module (nicknamed CSGO...we don't talk about the O) I have to make a simple game or game system inside Unreal Engine 5. This is a solo project that everyone has to do individually but as the focus is on the code, things such as appearance and presentation are not important, lightening the workload. My idea for this project is simple: I intend to make a 3D platformer wherein the player has a dash and double jump ability which can be stringed together for impressive world traversal. At first, you may think that's too easy, UE5 already has most of that built-in...until I say that I intend to program it all myself. Why am I doing that? Because of how the built-in versions work. Jumping, for instance, uses the advanced physics engine which makes it momentum based. You need to run/sprint before you jump or else you will go nowhere. Not onl...