My Game Project Story

I want to make games. When I leave school there is nothing I would like to do more than make games. So because of that, I wanted to start making games now. This project allowed me for to do that. This need started when I was a young boy. My parents gave me my first game system at the age of ten. My first favorite game was Spryo the Dragon. This game brought together my most favorite mythical creature with a great interactive medium. The story was almost perfect for a child of my age. Everything was bright and happy as I was bright and happy playing the game. It was almost the actual embodiment of my Saturday morning cartoons with in a interactive media. I spent hours collecting every gem and every other thing I could within the game. It seemed like hours vanished as I spent more and more time with that little purple dragon and his color cast of friends. As I grew older, I found other series that sparked my interest. My tastes evolved from simple adventure tales into much deeper Japaneses role playing games. These stories were deeper and the fighting systems became much more complex. I spent large amounts of hours working to fight each great evil within these games. The stories became more epic as time went on. They inspired me. Each game seemed to be taking ever story from my books and matching it with the cartoon visuals of my favorite shows. Nothing could be better. This love stayed with me through out my career as a high school student. During highschool I looked for a normal career because its what I thought I should be doing. I thought of being a doctor. It was a gross and squishy idea. But during my senior year, I reconnected with my artistic side. Everything else seemed boring in comparison. I realized I wanted to create but not in such an artistic sense. I was not good enough too really become a professional artist. So I looked at my other talents. For a long time, I wanted to take my cooking talents to a professional level. But the more I thought about it, the less I actually wanted it to happen. I liked cooking but I felt like if I did it as a profession, I would soon grow to hate it. I liked cooking for my self way too much to actually make a profession out of it. So I came to college with the idea of trying to make video games. This idea became a revelation. Why wouldn’t I do what I loved?

My classes began to teach me the tools I needed. When I began to program, I realized how much I had been missing. I wished I had been introduced to this concept before. It possibilities are basically endless while it give me more tools for creativity than I ever thought I could have. Childish dreams suddenly became reasonable ideas. I basically had the tools to do anything. It blew my mind.

I began to play. With games, with people and with code. Each program became a puzzle. The hardest but at the same time, also the easy puzzle ever. The puzzle was made up only a few pieces but most of the pieces repeated over and over. Each piece could fit where ever I wanted to place it but what the end result depended on what pieces I used. It was work but it was also the most fun work I had ever done. It allowed me to express myself similar to drawing but in a totally new way. Not only could I create art, I could create a product that could be interacted with, played with. The more I learned, the more I saw the possibilities of code. I saw how it code be applied to almost everything. Technology began to look simple. The magic behind a computer, disappeared to be replaced with a good understanding of what was actually happening. And the most amazing thing was that I actually could do anything I saw.

So time went on. I began to code for classes and work days upon those projects. For the most part it prevented me from really playing with the code like I wanted to. This made me sad. I wanted to express my self but still do well in my classes. Eventually I just got the point where I began to wonder why. I had free time. I could handle it. I knew I had to plan for my future while actually learning and because of that I deiced the best way to learn was to actually do. It was time to make games.

So I began to look around. I found friends that I thought would work on games with me. One friend to do art work while another to do audio work. My thinking was that I could bring these people together in order to complete a whole game. The three of us spent hours discussing what we would want in a fun game. We began to take every element of society we liked and compile it into a single overall game. The art work and the design of the game were going to be ridiculous. I don’t know if the three of us could have actually ever finished the game, but it was a great process. Those meeting were the birthplace of Powersource Games. We wanted to create an actual game company for students at UMaine. We wanted to add too the current course of studies with more game design related courses. To accomplish this, we wanted to show the faculty and current residents of the campus with the interest of the students involved. We began to plan out the next semester. We would advertise and try to get as many people involved as possible. We would erect our own website and try to show our work to everyone we knew. Powersource Games now has a Facebook and Twitter. We have the first version of a website up and we are currently working on a new version.

This semester was the beginning of our experiment. We went into several classes and told its participants about our group. For the most part, it worked. We got up to twenty people in our meetings. This large group actually came together to create a series of great ideas. I hoped everyone involved had a good time and gained something from it. As time went on less people came to our weekly meetings but that’s exactly what we expected. We know that schedule and plans change. Once the phase of just creating ideas ended, people without a real attachment would leave. We had no real motivation to keep people around other than the concept of creating a great game for their future resumes and some real work experience. For some people that was enough, others not really. Maybe one day when we are actually making money, we could offer a much better incentive.

When we final choose a single game to work on, we began to figure out what we actually needed to complete that project. Because of the talent of the people left, we choose the programing language “lua” and the game development software “Love”. The language itself was similar to other simple typed languages liked “python”. I began to pound away at the code of the game as the members of the group helped in any way they could. This is the end of this story leading up to this point. Another post will come latter with further details of the actual game and where I want to bring it. I hope you enjoyed the story.

Path Finding Function May 3

At this moment, this is my current path finding function. It starts by taking the information from each enemy where it is. This function takes up a lot of time, so I try to only use it only when I need to. The function then searches through the entire map to find that certain enemies goal. In most cases, the enemies are searching for the “RV”. When that function finds the “Rv” it reports back its current position. Those to values are compared and then stored with the enemy. By the end of this function the enemy know how far to move in what directions. As the enemy begins to move, it changes these stored values. When it finds it goal, it finally stops moving.

 

function PathFinding(index)
y = en[index][1]
x = en[index][2]

for i = 1, math.floor(wx) do –y
for l = 1, wy do — x
if en[index][7] == 2 then
–this will let the enemy follow you
if map[i][l] == en[index][7] then
en[index][9][1] = l – x
en[index][9][2] = i – y
end
else
–build in attack barriers
int = math.random(1, 10)

if map1[i][l] == en[index][7] then
en[index][9][1] = l – x
en[index][9][2] = i – y
end

end

end
end

end

May 3 in game Screen Shot

This is an in game screen shot that shows several towers and traps in use upon the playing field. The user has placed yellow towers and purple towers to attack at long range. The user also filled the ground with trap holes to deal large amounts of damage as the enemies got closer. The health system is showing what each enemy has currently. The user has also created new barriers for other tower placements, these towers are identified by the health indicates on the tower. These towers can be destroyed when other smaller enemies attack it. This will evolve as art work and more details are added to the game.

Weapon Menu May 3

This is a more complex screen for the user to buy and equip weapons for fighting within the game. Each weapon has an amount uses and costs a certain amount of resources when bought. The menu also reflects which weapon is currently equipped. If a player still has uses left in a weapon, they can change what is equipped and then come back to the other weapon later. As the game progresses more weapons will be added based on the current players status. Also when the item creation system comes into, these spots will be replaced with player made weapons.

 

May 3 Tower Info Screen

This was a simple page I threw together to inform users of the different types of towers. As the game evolves this will be where the users purchase different types of towers based on the different types of resources the player has at the moment. This will change the current towers on the in game menu. I tried to add enough info so that users can fully understand how each tower is built and used.

 

Intro Screen Version 1

This was my first attempt at an intro screen for the game. The game has a list of controls for the game and it gives some directions on how to play the game. The current tile of the game is “Project Hurricane”. This screen will evolve as art work and other information are added to the game.

 

Updated Screen Shot May 3

Below is a update on a the in game screen shot. Six towers are on the side and two types of enemies are in the game. The regular red enemies look for the magenta “Rv” and attack it while the other enemies hunt down the player. Those enemies are recent additions that kill the player over time. If the players health is 0, the game is over. Also with in the menu is an amount of resources. The amount of current resources dictates when new towers can be built. There is some information next to the towers on the menu. Also down at the bottom of the menu is two numbers keeping track of the amount of towers created and the next to it is the current amount of killed enemies.

Code Example 1 Love.Load

This is the most important part of the program. Everything that happens in the game needs the variables created upon this section of the code. For those not familiar with a love program, the function love.load() is only ever called once. This allows for the creation of every variable needed. Also a lot of computation can occur during this function so that the actual game runs faster. I personally added a lot of code to this section so that the actual game functions faster. I’m not sure if I needed to create all these variables here but it helps me keep track of every variable I am using. The largest and most important part o this code is the creation of the map the game occurs, the creation of each individual enemies and finally the creation of the towers. When a later version of the game is complete all that information will come in from another section of the program. So its a lot to take in but I think the code below gives a valuable insight to how this game works. Also I would like to apologize for the format of the code, all my indention disappeared.

 

function love.load()
dif = 1 — amount of mountains
size = 32
–whx = love.graphics.getHeight()
whx = 600
wwy = 800
–wwy = love.graphics.getWidth()
wx = whx/ 16
wy = wwy/ 16

–set camera
camera:setBounds(0, 0, wwy, whx)

— creating tile array
tile = {}
tile16 = {}
tile32 = {}
if size >= 16 and size <= 64 then
for i =0, 14 do
tile[i] = love.graphics.newImage(i ..”tile”..size..”.png”)
end
for i = 0, 14 do
tile16[i] = love.graphics.newImage(i..”tile16.png”)
end
for i = 0, 14 do
tile32[i] = love.graphics.newImage(i..”tile32.png”)
end
end

–standard map grid
map = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 3, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1 },
{ 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1 },
{ 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
}

— creating standard random map
for i = 1, (wx + 1) do
map[i] = {}
for l = 1, wy do
int = math.random(0, 10)
if i == 1 then
map[i][l] = 1
elseif wx <= i  then
map[i][l] = 4
elseif l == wy then
map[i][l] = 1
elseif l == 1 then
map[i][l] = 4
elseif int >= dif then
map[i][l] = 0
else
map[i][l] = 1
end

end
end
–end standard random map

–create image map
map1 = {}
for i = 1, (wx + 1) do
map1[i] = {}
for l = 1, wy do
map1[i][l] = map[i][l]
end
end
–end second array map

ilz = 0 –RV location

–begin speical map
— 5 is dirt
— 6 is light water
–second array special colors
for i = 1, (wx +1) do
for l = 1, wy do
int = math.random(0, 7)
— draw dirt
if i ~= 1 then
if map1[i][l] == 1 and l ~= wy then    –make dirt
if map1[i][l + 1] ~= 1 then
map1[i][l + 1] = 5
end

if map1[i][l – 1] ~= 1 and (l-1) > 3 then
map1[i][l – 1] = 5
end
end
if map1[i][l] == 1 and l  ~= wy then
if i <= (wx – 1) and map1[i + 1][l] ~= 1 then
map1[i + 1][l] = 5
end
if i > 2 and map1[i – 1][l] ~= 1 then
map1[i – 1][l] = 5
end
end
end
–draw light water
if map1[i][l] == 4 then
if l == 1 and i <= wx then
if map1[i][l + 1] == 1 then
map1[i][l + 1] = 6
map[i][l + 1] = 0
else
map1[i][l + 1] = 6
end
elseif i > wx  and l ~= 1 then
if map1[i – 1][l] == 1 then
map1[i – 1][l] = 1
else
map1[i – 1][l] = 6
end
end

if int >= 2 and l == 1 then
if map1[i][l + 2] == 1 then
map1[i][l + 2] = 6
map[i][l + 2] = 0
else
map1[i][l + 2] = 6
end
elseif int >= 3 and i >= wx then
if map1[i – 2][l] == 1 then
map1[i – 2][l] = 1
else
map1[i – 2][l] = 6
end
end
end
end
end

–end speical map

–player varibles and enemy
zxp = 0    –player x postion
zyp = 0    –player y postion

exp = 0 — enemy x postion
eyp = 0 — enemy y postion

— add the player and hole
map[13][14] = 2

map1[16][wy – 1] = 8 — test hole
map1[17][wy – 1] = 8 — test hole
map[16][wy – 1] = 0 — test hole
map[17][wy – 1] = 0 — test hol
ilz = 16

number = 0
–tower array thing
tArr = {}
towerInt = 6
toff = 0
for i = 1, towerInt do
tArr[i] = {}
— differnt aspects of a tower
— 1 tile image number
— 2 attack
— 3 range of attack
— 4 speed of attack
— x and y are 5 and 6
— 7,8 will be chaning x and y stuff
— 9 will be if moving
— 10 will be if attacking
— 11 and 12 will be spots on menu
— 13 will be individual counter for time
— 14 will be type of attack
— if 14 is 1 then all around attack
— if 14 is 2 then single attack
— 15 will be amount of attacks or type of attacks
— 16 will be the amount of resources required
— 17 will be the thing benth its placement
— 18 will be the health of destroy able
— 19, 20 will be there
for l = 1, 20 do
tArr[i][l] = 0
if l == 4 then
tArr[i][l] = 35
elseif l == 5 or l == 11 then
–standard is 880
tArr[i][l] = 820
elseif l == 6 or l == 12 then
tArr[i][l] = 60 + toff
elseif l == 9 then
tArr[i][l] = false
elseif l == 10 then
tArr[i][l] = false
elseif l == 16 then
tArr[i][l] = 40
elseif l == 17 then
–having issue with this placement
tArr[i][l] = 100
elseif l == 18 then
tArr[i][l] = -1
end
end
toff = toff + 40
end
tArr[1][1] = 7    –yellow tower
tArr[1][2] = 15    –attack power
tArr[1][3] = 1    –range of attack
tArr[1][14] = 1  –attack all around
–tArr[1][15] = 1  –how long it
–tArr[1][4] = 35

tArr[2][1] = 9    –purple tower
tArr[2][2] = 5    –attack power
tArr[2][3] = 3    –range of attack
tArr[2][4] = 25    –speed of attakc
tArr[2][14] = 2    –can only attack once
tArr[2][16] = 35 –R amout balnce it

tArr[3][1] = 12 — new barrier
tArr[3][2] = 0
tArr[3][3] = 0
tArr[3][16] = 100 –R amount
tArr[3][18] = 100 –health of the tower

tArr[4][1] = 10 –trap hole
tArr[4][2] = 100
tArr[4][3] = 0
tArr[4][14] = 1
tArr[4][16] = 75 — amount of resourses balnce
tArr[4][18] = 100 — health of tower goes down

tArr[5][1] = 11
tArr[5][2] = 100
tArr[5][3] = 10
tArr[5][14] = 1
tArr[5][15] = 1     –dies in one turn
tArr[5][16] = 250 –amount of resoures need mess with

tArr[6][1] = 14 –this will be destroy stuff
tArr[6][2] = 0
tArr[6][3] = 0
tArr[6][15] = 1
tArr[6][16] = 0

barAr = {} –this will be the array of barriers

–end tower array

inPAr = {}
for    z = 1, 35 do
inPAr[z] = false
end

WeCost = {
{500, 200, 0},
{250, 300, 0},
{50, 200, 0},
{10, 150, 0}
}

–player array of info
— add arrays for mutiple eneimes
player = {
100, –health of player
{“chain saw”, “baseball bat”, “stick”}, –names of wepons
{50, 20, 5}, –close range attack
{1, 1, 2}, — close range ranges
{“sniper rifle”,”shotgun”, “pistole”}, –names of long rane
{200, 50, 5}, — long range attack
{6, 3, 4},    –range of long attacks
3, –equip axe
3    –equip gun
}

–inital enemy creation
— cant go over 35 something else wrong
place = false
enNum = 35 — create how many enemies
for i = 1, enNum do
place = false
while place == false do
int = math.random(1, 35)
–int = 34
if inPAr[int] == false then
map[int + 1][3] = 3
inPAr[int] = true
place = true
end
end
end

en = {}
for i = 1, enNum  do
en[i] = {}
for l = 1, 11 do
en[i][l] = 0
if l == 3 then
en[i][l] = 100
elseif l == 5 then
en[i][l] = “r”
elseif l == 6 then
en[i][l] = math.random(25, 35) –mess with
elseif l ==7 then
–play with this
targ = math.random(0, 10)
if targ <= 8 then
en[i][l] = 8
else
en[i][l] = 2
end
elseif l == 9 then
en[i][l] = {}
for w =1, 2 do
en[i][l][w] = 0
end
elseif l == 10 then
en[i][l] = false
elseif l == 11 then
–en[i][l] = math.random(5, 10)–maybe too strong
if en[i][7] == 2 then
en[i][l] = math.random(4, 8)
else
en[i][l] = math.random(1, 5)
end

end
–one is x cord
–two is y cord
–three is health
— four is Not in right dir
— five is dir
— six is speed
— seven should be the target of the enemy
— 8 will be the timer for each
— 9 will be array cords of the goal
— 9 1 is the x distance
— 9 2 is the y distance
–10 will be if met goal bol
–11 will be how much their attack is
end
end

–enemy index varible
enInV = 1

for i = 1, #map do
for l = 1, #map[i] do
if map[i][l] == 2 then
zxp = l
zyp = i
end
if map[i][l] == 3 then
exp = l
eyp = i
— add enemys postions to array
en[enInV][1] = eyp
en[enInV][2] = exp
if enInV >= 35 then
enInV = 1
else
enInV = enInV + 1
end

end
end
end

— end enemy creation

— enable held keys
love.keyboard.setKeyRepeat(10, 200)

xs = 0    –map creation
ys = 0    –map creation
–es = 1    — enemy index

temp2 = 0 — storing temp numbs

Ndir = 0 — not direction enemy counter

counter = 0 — counter for color placements

time = 0 — enemy time
time2 = 0 — tower time

Resources = 2000
zoom = false
pause = true — start true
FirstPause = true
space = false
MousePressed = false    –if mouse is pressed
shortA = false    — if short attack is true
longA = false    — if long attack is true
mousEE = false — if the mouse is on an enemy
InMenu = false    — in the menu
InYellow = false     — in the tower
InPurple = false     — in the second tower
towerAttack = false    — same as bellow
towerA = 0    — if towers are attacking
tAmount = 0 –Keep track of the amount of towers
RvHealth = 1000 — rv health and stuff
RvAttack = false –if ens attacking lower rv health
FastF = false — fast forwarding enemys and towers
fastS = 35 — enemy speed and such
enCounter = 0
NewGame = false –if new game needed
EquipM = false –equip menu pause this
TowerM = false

text = 0
–spacePr = false

oldTower = 100

–love.graphics.newFont(20)

— u1, r1, l1, d1
m1 = 100
u1 = 100
r1 = 100
l1 = 100
d1 = 100
lowest12 = 100
small = false –need to keep
singleAt = false

–temp10 = 100

ofsetX = 0 — ofset for mouse x
ofsetY = 0 — ofset for mouse y

CMI = 100 — Current Mouse map index
CX = 100
CY = 100

Mx = 0
My = 0

–do first path finding
for w = 1, enNum do
PathFinding(w)
end
end

Autobotography Example – Ancestry.com

Ancestry.com is  a great example of autobotography. It allows the user to define them selves through the act of understanding where they came from. Users find out who they are related to through the site and for the most part they discover things the users didn’t know. It uses a central sever that allows for all users to interact. For some people the sites becomes a biography but for others, the people finding their long lost family members are forging their own autobiography. This site really creates a permanent sense of self because who your family never changes.