Log In  
Follow
Ronin

Beginner Game Designer working toward removing Beginner from my title. Found Pico-8 and loved it's style and decided to use it as a learning and prototyping tool.

Check out my blog at LightningSmith.space where I post regular updates on my projects and share what I learn about designing games.

[ :: Read More :: ]

Cart #49978 | 2018-03-05 | Code ▽ | Embed ▽ | No License
3

A small, experimental game I've been working on. Throwing it up for playtesting!

Update: 18/03/05


Added Game Over to Stage 5 when out of fuel

P#49905 2018-03-03 18:39 ( Edited 2018-03-05 20:46)

[ :: Read More :: ]

Cart #36781 | 2017-01-27 | Code ▽ | Embed ▽ | No License

Been working on this prototype and need some fresh eyes to see how it's coming along. This is a very bare-bones prototype, mostly a test to see how well the core mechanics work and feel.

Controls:
Start Moving
On Ground:Jump/Mid-air:Freeze&Aim/Frozen:Airdash
Shoot
Pass through blue platforms/Frozen:Unfreeze and Fall

All assets are simple placeholders and the levels are me working at making some tutorial stages. Please leave comments or fill out my feedback questionnaire. Any feedback would be greatly appreciated!

Thanks for playing!

P#36782 2017-01-27 14:37 ( Edited 2017-01-27 19:37)

[ :: Read More :: ]

I created an implementation of a queue for the game I'm working on, and thought that it could be of use to someone else. And while I was at it, programmed a stack and double-ended queue implementations as well.

To make a queue, stack, or double-ended queue, call makequeue(), makestack(), or makedqueue() respectfully. These functions return the empty queue or stack and are ready to use.

For basic queues and stacks, any attempt to add a value to the table places it at the end of the table, no matter the key you assign to it. Doesn't matter if you use t[1]=val, t.key=val, or add(t,val), it all works the same. Use t.pop to get and remove the lead value; first inserted for queue, last inserted for stack. And t.peek lets you look at the next value without removing it. t[k] will allow you to look at the value at that position, but that's mostly there so foreach and count will work.

Double-ended queues work a bit differently. Adding a value will normally add to the end table as usual, but you can also add a value to the front by using t.push_front=val or t[0]=val. Access is handled with t.pop_front and t.pop_back, which pops from first-in and last-in respectfully, and use t.front and t.back to peek similarly.

Don't know if there's a more efficient way to code this, but this is what I've come up with.

queue={__index=function(t,k)
   if k=="pop" and #t.tbl>0 then
   local pop=t.tbl[1]
   del(t.tbl,t.tbl[1])
   return pop
   elseif k=="peek" then
   return t.tbl[1]
  else
   return t.tbl[k]
  end
 end,
 __newindex=function(t,k,v)
    t.tbl[#t.tbl+1]=v
 end,
 __len=function(t)
    return #t.tbl
 end}

function makequeue()
 local q={tbl={}}
 setmetatable(q,queue)
 return q
end

stack={__index=function(t,k)
  if k=="pop" and #t.tbl>0 then
   local pop=t.tbl[#t.tbl]
   del(t.tbl,t.tbl[#t.tbl])
   return pop
  elseif k=="peek" then
   return t.tbl[#t.tbl]
  else
   return t.tbl[#t.tbl-k+1]
  end
 end,
 __newindex=function(t,k,v)
  t.tbl[#t.tbl+1]=v
 end,
 __len=function(t)
  return #t.tbl
 end}

function makestack()
 local s={tbl={}}
 setmetatable(s,stack)
 return s
end

dqueue={__index=function(t,k)
  if k=="pop_front" and #t.tbl>0 then
   local pop=t.tbl[1]
   del(t.tbl,t.tbl[1])
   return pop
  elseif k=="pop_back" and #t.tbl>0 then
   local pop=t.tbl[#t.tbl]
   del(t.tbl,t.tbl[#t.tbl])
   return pop
  elseif k=="back" then
   return t.tbl[#t.tbl]
  elseif k=="front" then
   return t.tbl[1]
  else
   return t.tbl[k]
  end
 end,
 __newindex=function(t,k,v)
  if k=="push_front" or k==0 then
   local ntbl={v}
   foreach(t.tbl,function(nv)
    add(ntbl,nv)
   end)
   t.tbl=ntbl
  else
   t.tbl[#t.tbl+1]=v
  end
 end,
 __len=function(t)
  return #t.tbl
 end}

function makedqueue()
 local dq={tbl={}}
 setmetatable(dq,dqueue)
 return dq
end
P#35553 2017-01-12 16:42 ( Edited 2017-01-12 21:42)

[ :: Read More :: ]

Cart #33616 | 2016-12-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Aggressive creatures have been wondering into your village. You volunteered to venture out to find where they're coming from. After a few days search you find yourself at the swamp that old legends warn of entering. With no other choice, you prepare to search the treacherous swamp.

First game I've publicly released, so probably isn't great but am still proud of it and was a great leaning experience! Am looking forward to creating more games in the future.

Don't read this unless you're having difficulty in battle. Did something kind of different and tried to made the first encounter a decent learning experience.


You use directional key and x to choose 3 actions per turn, player and enemy actions are simultaneous. You get a short message describing the action the enemy is doing to help decide the best actions.
There are 4 actions;
is advance, next attack does more damage up to a cap.
is circle, resets enemy advance bonuses.
is defend, reduces damage taken. Enemy defense counter attacks if no damage is done
is attack.

These actions are kind of a rock-paper-scissors, >>>>
But an attack with advance bonus will break though defense.

Some enemies have unique actions which have an unique counter.

Please give feedback, will help me with learning game design!
Updates:


First update:
  Fixed interact message
  Battle UI tweaks
  First enemy does and takes less damage to allow for more playing with fight mechanics
Second update:
  More changes to first fight

Sprites either taken from or edited from sheets made by Dan Norder, Spider Dave, and Denzi
Credit to Neale Davidson for title font.

P#33592 2016-12-16 20:21 ( Edited 2016-12-24 19:17)

Follow Lexaloffle:          
Generated 2024-04-16 09:10:55 | 0.081s | Q:15