Saturday, March 20, 2021

Binary Trees



Binary Trees was a small scale project focused on experimenting with L-systems and procedural generation.

Below is an example of how the L-system trees grow.


    The trees are drawn by writing pixel by pixel to a texture. This is a slower method, but because of the large pixel size its not a problem. This method also makes changing branches colors, or even deleting whole branches possible. 

    Each system contains no randomized elements. Because of their simple rule system the trees could be bred together and modified in multiple ways.

    My favorite part of this project is the ability to cut of certain branches and pick them up. This would ideally allow the players to cut off infected branches before they spread to the entire tree. It would also allow for "prettifying" the trees, or to cut branches to use their "genetic code" to breed new trees.



 

Friday, January 15, 2021

Cooking Mama Cookstar

 


    Cooking Mama: Cookstar was my first professionally shipped game. I worked on the main development team at First Playable Productions. There I:

  • Iterated on minigame design
  • Implemented new minigames
  • Iterated on motion control for switch and input backend
  • Reworked the audio system
  • Helped port to PS4

Motion control was an uphill battle, we constantly iterated on versions and the clients had a lot of input as to what felt better. One of the problems we experienced was that motion would get tuned to individuals, so one person playing the game would do it perfectly while someone else would struggle. The game now notices if you are having trouble and adjusts the thresholds, but it may have not been enough in the end. I would have liked more time to tune these values.

One of my first tasks was to rework much of how audio is loaded and played asynchronously. I added a system to preload the audio, and later down the line iterated on the CMS for audio.

The Ps4 port went over fairly smoothly. We have interchangeable input backends per platform, so once the Ps4 one was completed, much of the work was related to Ps4 specific mechanics like trophies.

I worked closely with the art and animation team to implement what they desired. Overall I would call this a great learning experience.


Real Street Festival

 



Real street festival was a professional subcontract I had with IHeartRadio to develop a Android and IOS app for the Real Street festival, a two day festival with many big names like A$AP Rock and Cardi B.
I'm not really into the hip hop scene, but I appreciate the effort put into the festival. I was flown out and stayed mostly in the "command room" where people ran the festival. I was in charge of maintaining the app and sending push notifications.

The App was made in one week at the request of the contractor. I spent most of this time getting the camera working with filters. I decided to use unity for this project due to the limited amount of time. The App had a GPS map, a camera with filters, a vendor list, and a schedule. Each were updated on the fly. I used firebase and Natcam plugins to run the camera and push notifications as well as some simple analytics.

GhostRunner Study


This is a short project i used to study the game "Ghostrunner". I wanted to recreate the movement system in unreal 4 using C++. The animations were made in blender, and could use a lot of work, but the point of this project was to show my ue4 C++ ability. 

For the wall running, I just got the cross product between the hit normal and the players up to decide what direction the player should run. I also smoothly lean the player camera similarly to how the game does. 

When jumping towards a ledge, if the angle is towards the wall, the character attempts a ledge grab. A line trace is fired above the players head, and if it hits nothing a ledge is detected for the player to climb up on. 

For the grappling hook, I add force to the player based on a curve. I also added a particle effect so you could see what you attached to. While I was at it, I cropped out the grapple icon from the game and animated it as a widget.

For the projectiles, I made it so the aim is predictive. I used a method outlined here. I then simply made the bullet raycast over its delta to reliably get the bullet collision. If the player is attacking, it is reflected, otherwise it restarts the level.

Overall, this was a fun side project. I really liked the feeling of the wall running and grapple. If I had time, I would spend more time working on the combat.

Nes Study

 


This project represents a curiosity that I have had about NES games and how they function, as well as an excuse to gain a better understanding of low level programming in assembly. In the above video, i show the project, and break down the code.

I had a lot of fun learning about the NES's architecture and what memory addresses are mapped to what function. There is a lot of experimentation to be done, such as switching out color palettes at runtime or creating animation by changing sprites.

It should be noted that each sprite is 8x8px so the character is made up of several sprites. This was common practice.

I later went on to add vertical scrolling, but got tied up with work, so the project was left as is.

The Fields

  This page is under construction...




The fields is a large scale text adventure project written in C++. I wanted to add a lot of simulation to this game. This ideally would mean that I could use a level editor to craft experiences that are more based on the mechanical interaction rather than a more static experience.

The project has two parts. Firstly, the game itself which loads in world data from binary files and saves as you move between tiles. And Secondly, the level editor that those world tiles are pre-setup in. 

I would like to add some more interactions and entity types in the future. One thing I really enjoyed was the behavior system, as it allowed for decision making not just by NPCs but also by entities. For instance: there is a mechanism entity type reserved for items that can be "used." This can cover simple interactions like a water pump usage, all the way to a drone that autonomously scans the environment for anomalies.






TownyFrowny






>Github<

Towny-Frowny was a small scale project used to study games like dwarf fortress. My main goal was to have a excessively large area simulated and displayed on the screen. I created a system for pathfinding, tasks, behaviors, player input and task assignment, and some basic AI.

The world is generated and displayed with 8x8 pixel sprites. The amount of sprite ranges based on the size of the world, but i wanted to try and display at least 1,000,000 simultaneously. This obviously was too many to render every frame, so i instead wrote the sprites to a render texture once, and rewrote individual sprites when that tile updated. This did however mean that I couldn't make objects go in-between tiles.

I learned a lot about C++ from this project, and now that I have some more knowledge i would like to go back and clean up the code some day.


Undelivered


Itch.io

Undelivered was a week long unity vr project based on an idea i had in a dream. I really like the internet trend of  "Liminal Space", so i tried to add that concept into the games world design.

I had alot of fun working on the level design and "directing" the players movements with scares.

Code-wise the game is very simple, mainly relying on collision triggers. I wanted to focus more on the experience with this project than showing off my ability with programming.

A majority of the levels were created entirely in unity using pro-builder.

Thursday, June 6, 2019

WareFare


WareFare (Warfare + Wares) is a small project i worked on with some friends for a c++ class.



The focus of this project was to create a c++ system in unreal, which is designer friendly. In the system we created, you can design your own sword, forge, hammer, and sharpen it. Once you place the sword on display, it can be sold.

We used the Blacksmith Forge and Over 9000 Swords packs from the unreal marketplace.

The class split into two groups of three. The idea was that one group would make a blacksmith game, and the other group would make a sword combat game. The Sword combat game would then purchase the swords made by the blacksmith. Sadly though, the combat did not finish, but the systems are still in place within the blacksmith project. The swords info is saved to a .json file when you set the sword into the shop.



Thursday, February 7, 2019

Shutter




Shutter is a game created in SFML, a lightweight opengl library.
I created the game in a total of 5 weeks in my free time during my winter quarter at scad.
I wanted to show my knowledge of c++ by creating a raycaster game.

I based my initial prototype off of the OneLoneCoders First Person Shooter. The sprite rendering and floor rendering were informed by this as well.

However, I notices several issues with the OneLoneCoder's code. 
Firstly, there was an error which caused a fish eye lensing effect. This was solved by scaling the ray distance based of the ray angle.

Secondly, there was no depth buffer. This was needed to add billboard sprites to the game. I looked at the way Wolfenstein Created their billboarded sprites and implemented the sprites in a similar manor.
Each Sprite is separated into vertical slices, hare occluded by the depth buffer. The Depth buffer only need  be one dimensional because there is no way for a sprite to be overlapped horizontally, it will only ever be overlapped from the left or right side.



After i had a simple raycaster i needed to create a game to go along with it. I came up with the idea of taking pictures and looked at how i would create that effect. When a picture is taken, the world will render out based of of a "secret" array. With hidden information like keys and doors that will only be visible in photographs.

Sadly sfml's functions for taking screenshots have been depreciated, so i had to go with a slower texture.update().

After i had the camera effect created i had an idea to have a ghost that only move when you take a photo. This turned the game into much more of a horror game as the player is trying to balance gaining infromation from photos of the room and keeping track of the ghost, and of course keeping track of the ghost in it of itself is a uphill battle as it moves closer each time you find out where it actually is.


The full  source code is available Here







Saturday, January 5, 2019

OceanPort Mystery





The oceanport mystery is a quick experiment i created when playing with my new fitbit versa. I used the convenient fitbit studio and some JavaScript to put it together in an afternoon and i liked it so much i just had to show it off.

Play it online: here

Sunday, October 28, 2018

Java 3d game engine





Ah java, how i love thy simplicity.
So i made this 3d applet a while back and figured i should probably post it somewhere. Before i got the change however, my hard drive corrupted.

YIKES.

All that work? gone.

I am working right now on rewriting what i can to show off that i did indeed make it, but youll have to spare me for my lack of snippets in the mean time.

Saturday, October 27, 2018

OpenGL


I've been studying opengl in hopes of making  a small game engine in c++.
I am following along with thebennybox's opengl game engine tutorials.
So far this has been a great learning experience and i am being introduced to some very advanced c++ concepts.


Here are some progress photos:


Saturday, October 20, 2018

AshFall


Store Page



Please visit the store page for more information, the following will be a breakdown of the code.

Map Generation Part 1

Here is a work in progress for a dungeon generator i am putting together.

So far it generates some rooms:



Then it connects those rooms with hallways.




Wednesday, December 13, 2017

Seagull Ai






Here is an ai for seagulls. They fly around, land, and take off similar to actual birds. A world can easily be populated with these birds to bring more "life" into the environment.

Full Code Here

Thursday, November 30, 2017

Inventory




Here is a inventory system i've made. It is inspired by systems like the one in resident evil 4
and focuses on items taking up physical space and shape, and requiring the player to manage their inventory space. For example, high value items could take up larger space, or be a strange shape, thus making it more difficult to carry. Note that objects can be rotated.

Thursday, November 23, 2017

Portfolio Revamp

I've spent the day revamping my portfolio, and more specifically my portfolio website. As of now, the page is hosted on the free web server provided by scad, and the domain was purchased through go daddy to have a more memorable URL.

I created the website using adobe Dreamweaver, it is my first foray into html website design, and i think what I've learned can prove very useful on future projects. Honestly i managed to pick up html very easily, i like the setup of having CSS to handle every thing to do with style, and html handling the layout of elements. My main focus for my website were as follows:
  • Full control over layout and design
  • Sleek but not flashy design
  • Smooth page transitions
  • Integration of Blogger
  • Responsive design, working on tablet, mobile, and PC

Sunday, December 25, 2016

Christmas Jam 2015


I've Spent the last two days of my break making this little Christmas game.
The main point of this game was to make a fun game for my friends.

But more importantly, i now have written a script to synchronize game timers to music (most music synchronizes cost upwards of 30$ on the asset store).

Saturday, December 17, 2016

Abyssal

This is the student project i completed over 5 weeks during the 2016 fall quarter of SCAD. It is programmed in Processing. All art assets, animations, and sound effects are made by me.


I followed what i think to be fairly standard practices when it comes to organizing my code. I think the main game loop could be cleaned up. If i were to remake the project from scratch i would use jsons to hold the level data, that way i can hold more information each tile. I could then use a program called Tilded, which is perfect for this sort of thing.

Thursday, October 27, 2016

What Im Working On

Project Lethe(Working Title) is a point and click game set in a secluded Canadian town where something has gone very wrong behind the scenes. You play as a character which, due to an accident during his early life, has which separated his brain into 3 sections, each with their own memories, but sharing the same personality. He switches through these states of consciousness fairly frequently, so he records his actions inside a journal, in a way talking to himself. You play as one of his states of mind and must piece the puzzle together, as the town starts acting more and more strange, and you find you now cant seem to agree even with yourself. Here is some of the placeholder art, which makes it so i can design the game and an artist can later go in and finish the backgrounds.


Tuesday, October 25, 2016

Hello

Hello.

My name is Nick Barber, I'm a programmer and game designer studying at Savannah College of Art and Design. I've decided to start a blog for a couple reasons. First off, being a programmer, i kind of feel like a black sheep here at SCAD. It can be difficult to show my work, as the first thing a player experiences is mainly visual aesthetics. I'll be using this blog to talk about what i'm working on and how i find solutions to the problems i'm finding.