I kinda like how this turned out, I'm not going to lie...
<-This is going to be an on-going series holding my stream of consciousness on level design ->
I didn’t buy my Playstation 2 until I was 23. After purchasing it used off of eBay for $45 bucks, I realized I’m my father’s son. When I was 5, I begged my dad for an NES for Christmas when it was the hot present (at $200 bucks), and then when I was 6, he bought one for $100 bucks when it was already old hat. I remember plugging it in and my brain being blown out of the back of my head when I first played Link II. The combo of top-down overworld with 2D side-scroller was a revelation at the time. I realize it wasn’t/isn’t the most popular game in the series, but I think there is a lot to learn from the level design.
Fast forward to my early twenties when I got my PS2 and started playing Jak and Daxter. Even late to the game, I was immediately enamoured with the level design and the way the open-world philosophy was implemented. I know I used a lot of marketing-speak there, but I really enjoyed these open-world games and I feel the “Jak and Daxter” series did a fantastic job of making me feel like I was exploring a new world.
Gamasutra has an interview regarding general level design philosophies with Hirokazu Yasuhara posted here, and I’d suggest any aspiring indie game designer give it a read. In it, Yasuhara discusses his design tenets, and brings up a very interesting point when he starts thinking about what would make a fun level: the creation of “distance goals”. He states that “I usually come up with three goals when I'm making a level: a short-distance, middle-distance, and long-distance goal.”
The idea that every level should have at least 3 goals to make them dynamic and more fun to play through is tough for me to wrap my head around, but the Jak games were so good at making these goals seamless. Yasuhara goes into a few different examples that represent what he would consider the different distance goals. I try to keep this in mind when I’m making my own levels, but I don’t have that quote on a poster on my wall. I think believing (and not forcing) that having those goals is key. In the above image, a player sees a fantastic level full of lush flora and physics-defying stonework. The good level designer will see a bunch of different locations, waypoints and hidey-holes that can represent and/or contain these goals.
It’s interesting to me that I use Link II as my mental waypoint for what makes an interesting gameplay experience from the perspective of level design. Shigeru Miyamoto once famously went on record saying that, of all the games he was a part of producing, Link II was the worst. Doesn’t bode well for me, but hopefully I can use the best parts and leave out the rest.
Thowing this up, just because I feel like it's a super-sweet map, and here's the direct link in case you want it.
So if you’ve spent any time with Corona, you know it’s pretty evolved as far as what you can do and the device options you have access to. Recording audio, video and random data, playing internet video and calling native webViews.
One really powerful function is the recording of video and saving it locally on a device. Corona has a tutorial for recording video, but it doesn’t explicitly discuss saving what you’ve recorded. A Corona SDK developer Eja has posted a really useful forum thread detailing how to save a video, with Corona, using json logic. I wanted to repost it to just make sure that it exists outside of the forums and people can find it later on.
And here's the code, for posterity:
local function copyVideoFile(videoPath,dstName,dstPath)
if not(wfh) then
if not(data) then
if not(wfh:write(data)) then
local function onVideoComplete(event)
if (event.completed) then
if (system.getInfo("platformName")=="Android") then
if (copyVideoFile(videoFilePath,savedVideoFileName,savedVideoDirectory)) then
--your video is now saved under (savedVideoDirectory) directory
--and the filename of the video is (savedVideoFileName)
--do whatever you need to do :)
local function mediaPlayListener(event)
Whichever way I'm doing it now, I guess.
Tumblr just doesn't want to cooperate. Not that big a deal I guess; I can just as easily post them here, and not have to worry about maintaining another website.
Lead dev at Panc Software and #strongtake generator