Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411485 Posts in 69371 Topics- by 58427 Members - Latest Member: shelton786

April 24, 2024, 07:22:41 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsThe Boy Who Stole The Sun
Pages: [1] 2 3
Print
Author Topic: The Boy Who Stole The Sun  (Read 5371 times)
smgorden
Level 0
***


Gentleman Programmer


View Profile
« on: March 26, 2014, 07:24:34 AM »



Theme
   An eight year old boy, sick with a fever, falls asleep and wakes up in a cold, mysterious world. The boy must explore the darkness of caverns that weave through the land and the bitter cold outside. He's barefoot and has only his wits to defend him.

Technical
   A few years back, I decided I'd like to try writing a software renderer. And as I happened to be on severe nostalgia kick, I targeted a look very similar SNES style for color and effect. I got some cool stuff working, but the first draft was slow, and I decided to simplify. A couple engines (and as many years) later, I arrived at a relatively authentic NES-style tile renderer using 4-color palettes. This had the added benefit that sprite art would be simpler to design. So I'm going with it. That being established, I knew that I wanted to play in a dynamic environment and showcase something that wasn't possible on the NES. So I wrote in a dynamic light and shadow system. I'm pretty happy with it.

Gameplay
   Primary mechanics all revolve around the manipulation of light and heat.
   The first object the boy finds is a lamp. The boy cannot create fire, and so must use fires that are available.
   The first cavern creatures are ghosts which wait around blue ghostfires, but will stalk the boy to absorb his heat.
   
Player Death
   If the boy loses too much heat, he'll huddle down, turn blue and freeze.
   He then wakes up in his bed, sheets on the floor, and shivering.
   Continuing the game will pull the sheets back up and the boy will fall asleep again, and drop back into the other world.
   
Narrative
   In short, there's a talking crow that wants the boy to walk up a mountain and steal the sun. The crow claims to be a cursed magician, and that he will restore prosperity to the land with the power of the sun.
   In order to survive the trip up the mountain, the crow must guide the boy to find items of clothing that will protect him from the elements.
   However, each time the boy makes progress, a bodiless shadow glides over the snow and speaks warnings to the boy about the dangers of the mountain. The shadows says the crow is a deceiver and a manipulator.
   Who is to be believed?

Art Design
   Colorful.

DevLog
   So I was at GDC last week. I made the rounds at the IGF pavilion each day and talked to a fellow who got a lot of value out of keeping his devlog here on TIG. His advice was "it's never too early to share." So yeah, gonna give this a go.

Other Stuff
   I have an archive of prototypes and demos I made to develop this concept. I'll probably post links to those here with notes. The first one will probably be my original gameplay prototype, from end-of-year 2010 which explores ideas for outdoor exploration and environmental interactions.

Screenshot
« Last Edit: May 26, 2018, 09:51:35 AM by smgorden » Logged

Makin' games.
oleomingus
Level 1
*


Oleomingus


View Profile WWW
« Reply #1 on: March 26, 2014, 08:25:32 AM »


I really like your game title ! and manipulation of heat sounds intriguing. Good Luck.
Logged

 
smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #2 on: March 26, 2014, 08:31:35 AM »

@oleomingus Thanks!

I just got a reminder a bit ago that I did not post anything about Music. So here's a bit on the approach for the soundtrack.

Music
After mulling over the age old question- "to chiptune or NOT to chiptune?" (and contacting several talented folks in the world of chiptunes), I decided to make use of my collection of hobbyist recording equipment and do a live soundtrack.

I do live recordings every so often at a local university (Illinois State), usually Senior Recitals for vocal students. After one such recital, I was out relaxing with my musician friends at local restaurant and met a student who took a serious interest in my game project and signed up to compose.

The first recording was done last week prior to GDC. The only piece we could schedule at the time turned out to be the last one composed, which is the End Credits Theme.

Check it out at the link following:

« Last Edit: October 02, 2017, 10:53:29 AM by smgorden » Logged

Makin' games.
dukope
Level 3
***


View Profile WWW
« Reply #3 on: March 26, 2014, 09:34:14 AM »

So I was at GDC last week. I made the rounds at the IGF pavilion each day and talked to a handsome and scholarly fellow who got a lot of value out of keeping his devlog here on TIG. His advice was "it's never too early to share." So yeah, gonna give this a go.

Interesting.

I already like the look of this. I'm curious to see how the dynamic light and shadows work in motion. I can just make out some cast shadows in that screenshot. The name & logo are top aces. Narrative and gameplay sound great. Music is nice too.
Logged

melos
Level 10
*****


View Profile
« Reply #4 on: March 26, 2014, 10:19:07 AM »

Got a gameplay video of any sort? Curious about the heat and light working, like others here! Anyways I like the devlog style so far. The live music is nice and an interesting juxtaposition to the graphical fidelity.
Logged

play hydlide 2
smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #5 on: March 26, 2014, 10:32:28 AM »

@dukope He was definitely the most scholarly fellow present at GDC. His fledgling beard had a ways to go, though. [see avatar at left for beard reference]
Thanks for the feedback. I will figure out how to do the whole video-capture-to-gif thing shortly and get a sample up here. The shadows really come to life in motion (also the lovely fire and particle effects, which are fun).

@seagaia. Yes! See above about the video. As for the heat, I've got a very basic thermodynamic system going which is based on ambient temperature for the loaded level and heat sources with a radius (no falloff, it's in-or-out for clarity). Also, certain terrain tile types have a fixed temperature, usually one that is colder than the air (snow, ice, water). It's working pretty well as a proof of concept.

There is one indicator of temperature, which is that when the boy moves into an area that is is colder than his body temperature, he starts to emit little frosty breath particles. Sound effects will pronounce that further when the time comes. Also, I've got the code in for snowboy freezing. It's the saddest code I have ever coded. Still makes me sad when it happens.

I obviously need to get a video up here, so I'll get on that. Stay tuned.
« Last Edit: March 26, 2014, 10:44:24 AM by smgorden » Logged

Makin' games.
smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #6 on: March 26, 2014, 01:03:17 PM »

Video GIFs

This is my first attempt at doing video-to-gif conversions. Hopefully these results are sufficient.
Of note: There's a ghost in this demo. He follows the boy any time the boy is warm enough to be of interest.

In which we see the lighting of the lamp.
https://i.imgur.com/tjZJEZ9.gifv

In which we see the ghost in pursuit. Also a light-absorbing crystal.
https://i.imgur.com/HcvxQBS.gifv

In which we witness the boy's demise.
https://i.imgur.com/hyPFDOi.gifv
« Last Edit: October 02, 2017, 11:20:22 AM by smgorden » Logged

Makin' games.
mason
Level 1
*



View Profile
« Reply #7 on: March 26, 2014, 01:26:48 PM »

wow this looks really cool. the title caught my eye too.
Logged

smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #8 on: March 26, 2014, 01:33:41 PM »

@Raycast Thank you! I agonized over the title of the game for quite a while before taking the plunge, as it were. Tell me, was it the title itself or the title graphic/logo at the top that caught your eye?
Logged

Makin' games.
smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #9 on: March 27, 2014, 07:54:41 AM »

Prototype

As mentioned at the top, I have some early materials to share. Here's the first gameplay prototype with tile rendering where I was looking for interesting overworld interactions. This also included the first tests of interactive temperature and weather.

Notes: This was two engines ago, tech-wise. Each time the app starts up, it generates a new terrain layout.



Download [Windows Only]: (LINK BROKEN, will replace when available)
« Last Edit: October 02, 2017, 10:54:15 AM by smgorden » Logged

Makin' games.
dukope
Level 3
***


View Profile WWW
« Reply #10 on: March 27, 2014, 04:58:56 PM »



I realize this is early yet, but these cast shadows feel out of place and don't mix well with the rest of the lighting. Area lighting is chunky but the shadows are sharp and look stuck on. Also, the long thin shadow shapes reveal the 2d-ness of the sprites to make them feel more flat.

I think the lighting could benefit from more unification. Chunkier shadows, better integration with the lighting palette instead of an overlaid alpha'd sprite, faked thickness for casting, etc.

An alternative would be to simplify the shadows to Zelda-style comets:


.. but the idea of proper cast shadows is kinda cool, especially given the game's theme.
Logged

TNERB
Level 5
*****


gamez stink


View Profile WWW
« Reply #11 on: March 27, 2014, 07:20:06 PM »

This looks really awesome.
Logged

smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #12 on: March 27, 2014, 11:40:56 PM »

@dukope I'll have to think this over. The illumination is done per-tile on the background terrain layer (as well as on sprites). The shadows are done per-pixel as a middle step between background and sprite rendering. There's lots of hackery going on to get the shape of the shadow to stretch and move around "properly", which means there's plenty of things that can be cleaned up there.

Fixed Constraints: I'm using 8bit color, the 256 available using 3-3-2 (RGB) encoding.

All rendered colors are in that palette.

Technique: Shadow pixels are blended onto the background, which means that the end result is product of the background color, the shadow color, a contextual blending heuristic, and the limited palette shown above.

The most recent version of the shadow code was tweaked for better results in the new "outside maps" (which are not yet shown here). Those changes ended up with darker shadow in the cave setting. Experientially, darker shadows tend to stand out a lot (probably too much). Previously, the shadows were more subtle, less distracting. I should probably head back in that direction.

I already have a flag in the level data that says whether it's an inside or outside level (important for the lighting model). It's worth considering an indoor and outdoor shadow model to get the best results in both cases.

I'll keep your notes in mind as this system gets updated. Hopefully there'll be a sweet spot that'll improve overall effect the scene. Thanks!

@TNERB Thanks for commenting! Much appreciated.
Logged

Makin' games.
smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #13 on: March 27, 2014, 11:44:05 PM »

@dukope I'm thinking more about the long, thin shadow effect you mentioned. I think that's been in the back of my mind, too. Too much stretching. I'm basing total shadow height on the height of the sprite, and it was originally designed with just the boy casting shadows. When I put the ghost in, which is twice as tall, I got a ton of extra long shadow that weren't expected to be exaggerated so much. I'm thinking I should cap the shadow height, or similar.
Logged

Makin' games.
smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #14 on: April 27, 2015, 07:51:46 PM »

A little update post... I'm still alive.
I went indie last year, which resulted in way more lifestyle shifts than anticipated, and lots of work
(blog post with details on that... http://smgorden.no-ip.org/?p=406, if that's of interest).

Update on The Boy Who Stole the Sun
The script language has had a significant update. The way I process script commands in the engine now has a distinction for certain high-level goals that can be executed over time. In the previous version, scripts were required to code things in a way-too-specific nitty-gritty way that wasn't any fun. Now I can write up a keyword like "Follow" and when it executes, it can pause the script and do work on the entity associated with that script until the command is satisfied or times out, when it will resume executing the next line in the script. This should make iteration and expansion of the script commands more fun. Aside from basic math and program flow, all the command keywords and special object names are in defined a text file. Enumerations of those values are auto-generated for use on the C++ side. This adds up a pretty decent way to make powerful commands that should can be implemented once and used in any other scripts that require such behavior.

The editor, ElderSmith, has some nice flood fills and selection boxes, and copy and paste (all edit actions supporting UNDO/REDO- about which am quite excited- first time I've coded up undo logic, so that's cool both as a coding feature as a thing that helps iterate and try out ideas).

A view of terrain editing mode


A view of collision editing mode

« Last Edit: October 02, 2017, 10:55:38 AM by smgorden » Logged

Makin' games.
smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #15 on: February 23, 2017, 07:54:10 AM »

Well, it's been another chunk of time since I've posted, but this project is still going. Most of the work of the last couple months has been debugging endlessly, both game and tools code. But I'm working toward the vertical slice, where I all my basic systems of interaction are in place. (And goodness... solo gamedev takes a while -_-;)

Recent screenshot... Test map launched from the editor, showing some little dudes running around, and some decor objects on the map like the bridge. Simplified the outdoor shadow casting a bit.

« Last Edit: October 02, 2017, 10:56:25 AM by smgorden » Logged

Makin' games.
Panurge
Level 5
*****



View Profile WWW
« Reply #16 on: February 23, 2017, 09:38:52 AM »

I'm just seeing this for the first time and it looks great! I really love the premise and the hot/cold, sleeping/waking mechanics. Solo gamedev can be a long and thankless grind but I really hope you see this through to completion. I'd certainly like to play it!
Logged

qMopey
Level 6
*


View Profile WWW
« Reply #17 on: February 23, 2017, 09:52:03 AM »

Posting for follow! I love your old timey art  Kiss Kiss Kiss
Logged
MaxTexeira
Level 0
**



View Profile
« Reply #18 on: February 23, 2017, 11:38:04 AM »

Wow, are you using pure c++ to make the game?
I love the retro feel!
Logged

smgorden
Level 0
***


Gentleman Programmer


View Profile
« Reply #19 on: February 23, 2017, 11:53:28 AM »

@Panurge : Thank you! I've been at this for a long time, but I love the theme and story enough to keep chippin' away at it. I appreciate the encouragement greatly Smiley

@qMopey : Sweet. This represents my first-and-only attempt at pixel arts thus far in life, but I'm learning things. Hopeful that the end product will be functional enough to deliver the story.

@MaxTexeira : Yes- 100% C++. Software renderer. Custom texture format. Building this beast from the ground up.
Logged

Makin' games.
Pages: [1] 2 3
Print
Jump to:  

Theme orange-lt created by panic