EMP Thought Patterns

I’ve had thoughts and themes circling around my head for a while now, so I decided it was time to jot some of them down and try to make any sense from them!

Extended Major Project – First Thoughts

It’s been a while now since the Specialist Project deadline, but I haven’t managed to completely escape development over the Christmas holidays. For now, I lay Somnium to rest as it is. But I’m hoping that as my development skills improve over time that I might be able to pick it up again and make something from it. For such a small project, it was weirdly difficult to explain in a few words, and I think approaching it with fresh thinking and more experience may do it some good!

For the upcoming Extended Major Project, I’m going to concentrate less on becoming an overnight Indie pioneer and more on how much of a game I can cram into one project. This will probably involve creating something fairly generic, but with a lot more functions and gameplay elements than I implemented into Somnium. I want to prove that I can create a successful game, before proving that I am an experimental artist and a unique thinker. In fact, the more I now aim for genericness and un-originality, the more I can prove. I feel like I may be taking steps in the wrong order right now, however Somnium has taught me a lot of things through experience that I may not have discovered any other way.

I don’t mean that I want to completely recreate something which has already been made, but I want to follow all the rules and obey all the guidelines. The holiday my brain will have will be hugely beneficial in the long run.

I’ve started writing up about some of the games that inspire me already at:
electromagneticproject.wordpress.com
and will probably use this as a main blog from now on.

Known Bugs & Errors

Although I have managed to create a playable game, it isn’t without its flaws. I am aware of these, and some of them are evident in the playthrough video! They mostly concern spriting and level-design issues…

1. The Unintentional Flashing Screen Effect
This is something which has come up on the Game Maker forums quite a lot so I know I’m not the only one with this problem! It seems to happen when the fade transition is used to cross rooms, or at the beginning of the game when it flicks between the game and the video footage. The flashes between rooms are actually showing the character change location before changing rooms, so the character is transported to a certain location in the wrong room before the transition is fully completed. There is no way of prioritising things like this, so I’ve left this for now. The screen flashing at the beginning of the game is due to the transition between game and video. Occasionally when the fade transition is used, alpha images suddenly become visible for a brief moment (I know this because of the forums!) So when the video ends, the title screen which has faded to alpha in the background flashes back to life and fades rapidly. It doesn’t affect the gameplay, but it’s annoying none the less.

2. Jumping Sounds
This is mainly my error, as I’ve coded the jumping sound to play whenever the up key is pressed (as long as the character is not climbing!) I did this assuming the player would only press the jump key if they were on the ground, however if they do press it at any point while the character is in mid air, the jump sound will play.

3. Character Location
Again, something which I could have resolved if I had time to be picky. Occasionally, the character will appear to be floating or walking through solid objects, due to a sprite change or because I have placed the game-path badly. This actually happens a lot while the character is climbing. As long as the character touches an area of pink by the slightest amount, the character changes to climb mode. If the climbing area is too close to a background edge, the character can appear to be climbing on nothing. If I had more time I would have included more animations when climbing on very thin branches too, as this just looks very unnatural!

4. Spriting errors when two keys are pressed
It is possibly to confuse the game by pressing two keys at once! The character will always move in the right direction, but you could end up with a random sprite not intended for the keys pressed (or the sprite will represent just one of the keys, resulting in a climbing sprite when walking horizontally etc.) A similar problem is faced if keys are held while the character is falling, or if the jump button is held for a long period of time. A lot more coding may have been required in order to cancel old commands if more than one key is pressed.

5. General Spriting Errors
There are plenty of spriting errors, especially within the interactive sprites which I haven’t had much chance to work on. They often jump about hastily, or freeze before coming to the end of a cycle. This is especially noticeable in the “leaf drop” animation. If the character moves away from the animation quickly, the leaves seem to stop in mid air and eventually just disappear.

6. Getting Stuck On Invisible Platforms…
One improvement I definitely feel I could have made to the level is the application of a more obvious playable path! I also discovered quite late in the development process that it is possible to make one-way invisible walls, so the player could be able to move up through a wall but not down. This would have helped a lot at places where the character must climb then continue to travel horizontally. Occasionally, the character hits his head on an invisible platform and has to move horizontally to avoid it, all without actually being able to see which areas are blocked and which areas are free. This was not an issue whilst using the mouse as the character automatically moved to avoid obstacles, but I never quite perfected the level design when I switched over to keyboard command.

Somnium Playthough Video

I’ve recorded this video to demonstrate almost every detail of the game by showing both routes down the tree and getting some of the interface, dialogue etc. I had a few problems with recording the video, and as a result I had to compromise on quality, but if you want to see the more crisp details of the game any of my other videos show this pretty well!

For those who are privileged enough to have a .exe copy of the game, the controls are:
LEFT = move left
RIGHT = move right
UP = jump/climb up
DOWN = climb down
RETURN = talk (scroll through dialogue)
ESCAPE = pause (quit)
F1 = info


At the end of the game:
ESCAPE/RETURN = quit game

Design Screens

Throughout the project, I’ve tried to keep my Game Maker document tidy and organise by placing things in folders and keeping everything names correctly etc, although then again not always! Here’s an interesting look into the game as it looks in design mode in Game Maker by the end of the project:

This slideshow requires JavaScript.

The Final Hours

The final presentation for Specialist Project is tomorrow, so I’m using today to add the little details which will effectively wrap up the project. Unless anything proves to go horribly wrong today, I won’t be making any changes to the game. This morning’s task was to create a game icon and loading screen, for complete customisation of the Game Maker defaults and to make the game feel more authentic.
As an homage to the engine which I couldn’t have made this game without, I’ve based my game icon on the Game Maker logo. This is the icon which will appear in the Windows Explorer window, desktop or taskbar, and will link to the stand-alone executable.

Game Maker Icon

My Icon

The actual icon for the Game must be a .ico filetype, which requires created a small version of the image (either 16×16, 32×32 or 64×64 depending on the usage of the file!) Windows icons are typically 32×32. Photoshop won’t export .ico filetypes, so I found a website called <a href="http://converticon.com/&quot; target="_blank"converticon.com which takes any picture file of any size and reduces it to a .ico file. To include alpha, I used a PNG version of my icon:

Apply this icon to Game Maker doesn’t include any coding, as Game Maker provides plenty of easy to apply options to change the global game settings. Under “loading” options, I simply applied the .ico file to the game icon option:

You can see from the image above, that you also have the option to customise the loading screen. By default, when the game loads this loading bar is shown:

which is really horrible! Instead of using a loading bar, I’ve created an image which simple says “Somnium is loading”. I’ve been playing around with custom loading bars, although I’ve been having trouble with the scaling. Despite not clicking scale progress bar image, whenever I try to apply a custom image it has a tendency to stretch the image towards the end of the loading period! I don’t know if this is a fault with the engine or something which I’m doing wrong, but I feel my image works well enough on its own.

The image is a PNG format for transparency purposes, although the engine doesn’t seem to read alpha unless the “make image partially transparent” box is ticked. Even then, it will only read spaces of full alpha as being transparent; I tried to apply a drop-shadow which fades from grey to alpha, but the colour came out solid in the loading screen. As a result, the image is very plain but serves its purpose.

I’ve tried to customise as many options from the global game settings as possible before exporting the final executable file. Here’s a rundown of some of the customised settings I’ve applied:

Once the game is loaded, it will start to play in full-screen mode, but the screen will appear black around the 640×480 window of gameplay. There’s no need for any user rescaling (unless for some reason they are using a screen with a resolution smaller than 640×480…) and there is no reason for the cursor to be visible. In Windows, the game can always be pushed into the background by hitting the windows key on the keyboard or ctrl+alt+delete, but unfortunately there is no save function so the game will be reset if it is shut down.
I have not changed any of the settings in the “resolution” tab as there is nothing to change!

Any other options are here. I’ve disabled the escape key as I’ve already set it to bring up the pause menu, and the game can be quit from there. F1 brings up the game information, which is a text document showing some basic information about the game. There is currently one sentence in the game information page, but I will add some before creating the final executable! F9 allows the user to take a screenshot. Why not?
The options in the “Errors” tab set how and when to display errors, although I’ve tested the game several times and got housemates to retest, and there should be no errors!

GDL – 2/12/11

It feels like I’ve accomplished a lot today, although ultimately I’ve achieved a lot of very little things rather than something big and important. I’ve added a selection of the game-world interactions which I was hoping to include, and I’m hugely more at ease with the game after these additions.

You can see here where I added the “leaf drop” objects to the level design. The object starts at image index 0, which is a completely transparent sprite. In order to see exactly where I was placing these invisible objects, I had to temporarily draw in some kind of indicator which I later deleted!

Although I technically still have a couple more days to improve on what I’ve got, I’ve written up my end-of-project report to get that out of the way. I think you can view the report, as well as the learning agreement and complete Game Design Document by following this link to my Google Docs upload, although I’m not really sure how linking to Google Docs works…

Interactions

One of my main aims at the beginning of this project was to make a believable world, which reacted to the player’s actions at all times. Unfortunately, due to coding nightmares and various other issues, up until now the world has been mainly made of static backgrounds which have no relation to input from the player.
I’ve spent half this week trying to make the game space a little more interesting by adding character/world interactions, but I haven’t had much luck. Today, I finally managed to come up with a couple of things that worked.

Loose Leaves
I guess third time really is lucky! I had an idea to show some leaves coming loose when the character moves behind large areas of leaves, especially where the leaf rustling sound is played! I tried this a couple of times before, but didn’t manage to create a successful animation until my third attempt today. I originally started on the basis that my leaves were round, and was spawning random circle shapes into existence when the character moved to certain areas…
The original animations looked like this, fading in from alpha and gradually separating and fading back out ready to begin the sequence again if the player backed up on themselves. It took me two attempts to realise that this was a horrible representation of leaves, as although I animated them to move like leaves, they were always facing perfectly forwards!
This morning, determined to get this right, I went back to paper to sketch out how leaves might change rotation/angle as they fell. I’ve tried to keep the leaves round, but have distorted the shapes to show angle differences throughout the falling process.


In this sequence, you can see the obvious spread and fall of the leaves as they loosen and drop (or fade, as the case may be!) With this applied, the game already feels a lot more natural to watch.

Flowers
I already placed the pinky purply flowers across the map, but one thing which bothered me was that they didn’t even move, even after being jumped into or fallen on! So I gave both the empty version and full flower version a swaying sprite sequence which is activated when the player comes into contact with them.

The movement in this screenshot is very subtle, but if you look closely you might be able to see that the bulk of the flower changes position throughout the sequence, and the “tail” at the end sways around slightly. Unfortunately, I have not been able to come up with a system which accurately moves the flower when it is knocked. All that happens is this animation plays, no matter where the impact came from. My coding knowledge definitely doesn’t stretch that far, especially something this physics-y!

Fireflies
This is just a nice little thing which I thought I’d create simple because I seem to have enough time to do so. The newly created firefly creatures look a lot like the stars in the background, only these bob about and will always face the character. The simple animation only really needed a couple of frames, however I’ve added two frames per facing direction and added a slight fade to one. When in motion, this creates the effect that even though the firefly sits in one place, it is not completely still.


To change the way the firefly faces, I used this code in the step event:
if obj_dude.x x
image_xscale = -1;
This changes the x-scale of the image based on whether the position of the character on the x axis is greater or smaller than the position of the firefly.

Devlog Video 3

This isn’t so much as a Devlog as an update on a couple of things I’ve added to the game in the last week, it doesn’t look like much but I seem to be spending most of my time researching better ways of coding right now than actually developing the game much :/


Since recording this video, I’ve also added a prompt by the dialogue that explains that the return key scrolls through the text. Simple things.

Talking To Trees

When this project began, I didn’t think it was weird at all to have made up a talking tree character. Throughout the project, as I’ve explained that the little dude talks to the tree and that the tree tells him where to go, it’s started to sound increasingly crazy out of context. If I were to recreate the opening animation I think I would add a compulsory explanation of why there is a talking tree :S
But as we can all agree that the talking tree definitely does exist, I had to come up with some way for him to talk. So far, I have mainly been using images or typography rendered in Photoshop where text is concerned. This was a fairly simple way to apply the text, as a lot of the prompts are repeated and it saved me the effort of typing out words every time. When it comes to dialogue, it’s much more effective to use the program’s “draw” function to generate strings of text, in a similar way to the text which is drawn in the pause menu.

Like any element in Game Maker, I had to create an object which would be placed into the game. I created an object called obj_talk_control, which uses an invisible solid box sprite to stop the character at a certain point. In the room editor, the object looks like this:

However, this is never seen by the player. Instead, on contact with the character, the object is programmed to draw the text which I placed into the objects Create event:

The block is split into separate lines to show where the paragraph of text should be broken up. The # symbol represents a line-drop in the text. In the object’s step event, the return key is programmed to scroll through the lines of text:

This basically shows that the each line of text should be shown in order when the return key is pressed. Once the player reaches the last line and presses return again, the instance is destroyed. The text disappears from the screen and the invisible green box vanishes, allowing the character to move forwards again! The settings for the text are programmed into the object’s draw event:

The room which this object is placed into is classed as a persistent room, which means that everything that happens in that room stays that way after the player has left. This also means that once the object is destroyed, the player can no longer communicate with the tree at that point, I just hope they pay attention! The rest should be fairly self-explanatory any way!