Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Creating a Minimalistic (yet nice!) Title

Titles are kind of a pain to make without using images from somewhere else, just using an abundance of brushes you didn't make, or even using a stock title someone made and slapping your title on it. These are all pretty... Unfulfilling, in terms of the creator, really. You want something that looks great, you want something that you made, you want awesome, and you want it now! Well I'm sure you're probably not so enthusiastic as that, but my point stands regardless.

Making a title out of crap you didn't make is relatively lame-ish, so I'll be detailing how one might go about making a title using minimalistic shapes and RGSS (I'll try to keep the RGSS pretty basic, which shouldn't be too hard since I kind of don't know ruby anyways). It'll involve shapes, and they'll move, and it'll be fun looking. I guarantee it.

CREATING YOUR TITLE

Well I'm going to be keeping this relatively simple, so we'll just be doing an easy black on white title. Let's call our game something cute, something original (since it won't be a real word). "Incandesia" should do wonderful, it's like an idea light bulb (incandescent lighting), only put into proper noun-esque form! Now I'm also just going to be using shapes and default fonts (I'll just stick with Garamond font, since I rather like it).

NOW, the title graphic that you load into the database! It's just going to be a white 640x480 image. So just boot up your photo editing program (for free ones I'd suggest The Gimp or Paint.net, but since this isn't really an art tutorial I'm not going to be going too in depth to the exact creation of this stuff, so you'll have to bear with me). Create nice 640x480 sized image, fill it with white and save it into your titles folder, we'll just call it white_title for now, simple and fun!

And now we'll be making our fantastic little shapes. [I should note that we'll be working with layers and transperency here, so using a simple program like paint might make this part a bit dicey for you.] I think for this we're going to have a line extend into the screen from the left as a little intro image, and it'll be black, and reveal the white text of the title. So! In our graphical editing program, let's go about making that line. For sizing purposes, let's first make the title text (in black so you can see it for now), and find a nice size and way to type it out. I decided to just have size 72 i, followed by the rest of the word in caps in size 60. Looking something faintly like this:

iNCANDESIA

Now let's put together that nice little black line I was talking about. On a new layer, take a nice big rectangle around your letters (preferably with the same amount of space on each vertical side of the text, but guesswork isn't exact and this isn't exactly a perfectionist job right now), and fill it with black. (rectangular maraquee followed by alt+backspace in photoshop) Now we'll put a rounded edge on the rectangle, so take a circular selection at the end of the rectangle and fill it with black. Note that you cannot see the letters anymore so it's about time we changed those to white (and of course put that layer above the black layer so it shows)!

Since I've said a lot of garbage without any pictures, I'd say it's about time we got a visual representation of what I'm talking about, the stuff with the layers you need to know about, etc.

http://img185.imageshack.us/img185/5780 ... m01ly0.jpg[/img]

Notice how there's three layers in the picture, the background (what we originally saved as the title, only visible so we can get an idea of how the final product will look), the text layer (iNCANDESIA), and the black line layer.

Well alright, I'm satisfied with how the title text and line look (since I'm not using any brushes and it's supposed to be pretty darn simple for the sake of ease), so we'll be going on to the newgame, continue, and endgame buttons. Note that we're not going to use the little default menu here (ugly window skin creation, etc), but we're still gonna stick with the default names. It's a good point of knowledge to know that in no way are these names stuck in stone, which is nice.

So for the buttons, I'm thinking we're going to have a grayed out version of the button text for when it's not selected, and just have it fade into black text when it's selected and have a simple line be drawn under it. The line is going to be drawn using RGSS, so be forewarned!

Anywho, let's get to typing in that text. We're going to be saving over that nice title background we saved before, since it's more efficient to have the grayed out text for newgame, continue and endgame to just be on the title image than another bitmap object altogether. Let's just type the three selections in rather simply in lower case, size 36, and in a rather light gray color. Make sure they're all on seperate layers so we can change them to black and save them individually later.

This is what your title image should look like now:

http://img167.imageshack.us/img167/1108 ... tlemj1.png[/img]

Well anyways, change the colors on the selections to pure black now, and we'll get around to saving our images. We'll be using/abusing the pictures folder in your project folder for this one. Make every layer but your black line layer invisible and then save the image as 'black_line' in your pictures folder, make sure you're saving as a .png so you can keep your transperency (it's pretty important!). Rinse and repeat with the other layers, naming the text layer 'text.png', new game layer as 'newgame.png', continue as 'continue.png', and end game as 'endgame.png' (pretty simple but this sort of stuff can trip up some people occasionally).

And now we are officially done with the graphics part of our title making fun. Be wary since we're moving into the RGSS hell section. (note that we didn't resize anything, this is so we just don't have to deal with that in the coding section because it's kind of a hassle!)

DEALING WITH RGSS

Alright, so let's open up our project and get down to it. Set your title to the white nonsense you made up above, turn the title music off (because it gets annoying listening to the first 30 seconds of it over and over and over again while testing/improving/whatever) and get ready for confusion (unless you know ruby, in which case you'll probably have a better idea of what I'm doing than I will). Now that you've got that nonsense out of the way, we'll just be jumping into the confusing coding, open up your lovely script editor and navigate here:

http://img166.imageshack.us/img166/7899 ... m02ph4.jpg[/img]

And to our first order of business:

Disabling the Command Box Graphic

As I'm relatively lazy, and the command box fits the general theme of selection, we're going to just make it invisible, but still use it completely. It makes it so we don't have to run through and cut out the relevant code, and we also don't have to code in the selection system. Anyways, to disable the graphics for it, all we need to do is make it's visible property set to false. Scroll your way down to (what's currently) line #43 (the lines are numbered on the left margin), and press that shiny enter key and make a new line, and type you in some, "@command_window.visible = false". Relatively simple is it not?! And so we move onto the next subject!

Making the Button Graphics Work

As the command window is now invisible, it's slightly difficult for the user to find out what selection he's on. Not to fear though, as we'll be putting in the nice button graphics now. We need to start by making a sprite for the button graphic. Find your way over to line #35, make a new line after it, and type in, "@button_sprite = Sprite.new" This is going to be our button graphic. On the next line, we'll make it invisible to start with, since it'll be fading in. The next line is going to be "@button_sprite.opacity = 0" (the opacity property ranges from 0 [invisible] to 255 [fully visible])

And now we'll go about checking what the user's selected index is, and fading those nice button graphics in relatively smoothly using loops and if statements! (the bread and butter of fun programming everywhere) Scroll on down to cool line #71 and take note of the "loop do" there, that means an infinite loop as long as the scene is open, which means this is where we'll be doing our graphical updating and whatnot. Under line #71, we'll be adding a relatively complex bit of coding to determine what graphic we should have @button_sprite set to.

Code:
      if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
        @button_sprite.opacity = 0
      end
      if @command_window.index == 0
        @button_sprite.bitmap = RPG::Cache.picture("newgame.png")
      elsif @command_window.index == 1
        @button_sprite.bitmap = RPG::Cache.picture("continue.png")
      elsif @command_window.index == 2
        @button_sprite.bitmap = RPG::Cache.picture("endgame.png")
      end
      if @button_sprite.opacity <= 255
      @button_sprite.opacity += 15
      end

Well alright, the first if statement (if Input.trigger etc) is a big way of asking 'did the user press up or down?', and then 'if they did, make the button invisible'. So whenever they change the selection, their new selection will be invisible to begin with. The next if statement is checking the (now invisible) command window's index (index is just a numbered representation of what selection is highlighted, starting with 0 being new game in this case), and changing the @button_sprite's graphic accordingly. The last if statement is checking if the button isn't fully visible, and if it's not, then it'll up it's opacity gradually until it is. The higher that number is, the faster it'll fade in, set it to 50 and it'll fade in in no time, set it to 1, and it'll take a while.

And now our fading buttons are complete! If you didn't care about anything but the selection buttons looking relatively acceptable, then your title is done! But now we'll be moving on to...

Creating the Intro Graphic

How I talked earlier about the black line sliding in and revealing the title text. This will deal more with loops than our last efforts. So we'll start our little intro adventure at line #38, and we'll enter in these three lines for the black_line graphic.

Code:
    @black_line = Sprite.new
    @black_line.bitmap = RPG::Cache.picture("black_line.png")
    @black_line.x = -480

And then we'll enter two more lines for the text graphic.

Code:
    @text_sprite = Sprite.new
    @text_sprite.button = RPG::Cache.picture("text.png")
(looking familiar enough to you yet?)

And now that we've initialized the graphics and placed them accordingly, let's move down to line #77 and add in the loop to bring that black line out and make the text visible! Add this in and I'll explain it:

Code:
      unless @black_line.x >= 0
        @black_line.x += 4
      end

It's largely self-explanatory, unless the x position of the black_line graphic (x is horizontal going from the top left pixel of the graphic) is 0 or above, it'll keep adding 4 to it every frame.

And now that we have the intro done, it's time for...

Me Continuing this Tutorial Some Other Time!

Yeah it's a letdown I'm sure, but it's 6:30AM and I haven't slept for over a day. (I really don't know why I did this right now, but hey whatever when the whim strikes you just gotta do it) Sorry for not getting to the underlines, but I'm pretty sure I'll be adding them to the 'advanced-esque' section of this tutorial, since it'd be kind of a big chunk of code to do it how I thought I would (what with irregularly placed buttons and all that jazz)

Oh and the title so far. It's got a nice little space for a logo or somesuch other nonsense, I figured someone might like to see it in action without making it for themselves so I put it here:

http://www.sendspace.com/file/rx50vk

EDIT: oh wow I kind of forgot to mention disposing of your graphics! Go to line #111, and enter in:

Code:
    @button_sprite.bitmap.dispose
    @button_sprite.dispose
    @black_line.bitmap.dispose
    @black_line.dispose
    @text_sprite.bitmap.dispose
    @text_sprite.dispose

PART TWO

The point of this tutorial has kind of changed, now I'm just going to encompass 'making a nice title' instead of 'making a nice title without having to do a lot of work to make nice artwork'. I'm going to be using some pre-made artwork from the game S.T.A.L.K.E.R. and a font called 1942 report (you can look it up on deviantart), and I'm going to be giving a little less 'go here do this exactly' direction to make you think a little more, and thus probably learn a little more if you're trying. We're going to be making the title a little more advanced this time, and probably take up some more disc space while we're at it. We're going to use the same title because I'm uninventive, but it's going to look pretty nice in my opinion!

This is what the end-product should look like generally:

http://i4.photobucket.com/albums/y111/A ... utIm03.jpg[/img]

The newgame will scroll up/down to display continue and end game, and there's going to be an animation of static overlaying everything (slight static). I've uploaded the graphics I'll be using in case you feel like just following along with what I'm doing, but the main point of this part of the tutorial is just learning how to do similar things with your own choice of graphics, so keep that in mind: http://www.sendspace.com/file/yfhgeo

Well alright, we've got our graphics, we've got a shiny new project, so we may as well get started.

Since eventually you'll probably just want to disable the command window for the title (left/right movement or something), we'll just do it for this one (even though I have the same lazy excuse as last time to leave it there).

So we'll start with this, I'll just name off the lines you'll want to get rid of stuff, and I'll leave it to you to figure out what exactly needs to be deleted (the command window object is called @command_window, we'll pretty much just be deleting every line that has that in it and replacing it's use with an @index variable). Lines: #36-43, #56, #58, #82-83, #93. And those are all the lines we'll need to take out (I took some of the comments as well since they refer to @command_window and are thus super-useless to us for now).

So, as we've killed any way of user interaction for now, I submit that we should add in the basic function of our own menu-esque selection system now.

Remember how we added in "if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)" up above? Well now we're going to differentiate between the up and down, and add in the @index variable to make the system save which place we're on.

Let's make the index variable first and introduce it to the code already there so we don't forget later, as I've done in the past. Head over to line #32, and put in a new line, this is where we'll be putting our variables. Add in "@index = 0" and we've got the rudimentary piece necesary to a menu! Now to the start of implementing it, head down to line #49, and replace the "else" (since without the @command_window command we won't be using it) on that line with @index = 1 to make it so if there's savegame data, we'll set the selection to default on continue instead of new game. Now we'll go down to line #84 and change the @command_window.index to just @index. And that'll do it for that.

Let's get to that user input shall we? We'll place that right under the loop do, now located at line #59. Add this nice little tidbit in so we have our @index determined by user input.

Code:
      if Input.trigger?(Input::UP)
        if @index == 0
          @index = 2
        else
          @index -= 1
        end
      elsif Input.trigger?(Input::DOWN)
        if @index == 2
          @index = 0
        else
          @index += 1
        end
      end

And now we have a menu, and the user could use it, if you don't mind them not being able to see it. So let's remedy that situation, and make our button graphic. Back up to line #36 to add in "@sprite_button = Sprite.new". Now let's travel back down to line #94 to update graphics with another branch. Add this in:
Code:
    if @index == 0
      @sprite_button.bitmap = RPG::Cache.picture("newgame.png")
    elsif @index == 1
      @sprite_button.bitmap = RPG::Cache.picture("continue.png")
    elsif @index == 2
      @sprite_button.bitmap = RPG::Cache.picture("endgame.png")
    end

And our basics are done! The user can use this title now! Sure it's pretty basic and lame for the moment, but we'll be fixing that later. Let's not forget to make sure our graphic is disposed of however, since I kind of make this mistake like every time and forget about it. Go to line #89 and add in "@sprite_button.bitmap.dispose" and "@sprite_button.dispose".

Now we'll add in that overlying static effect for something relatively maybe pretty to look at. Let's head up to where we declared our variables and graphics and add in a @animation_count = 0 in the variables, and @sprite_static = Sprite.new in the graphics. Now head back down to the graphics update (line #98 now), and we'll be adding in a case for animating things frame by frame (since .gifs aren't accepted into RMXP). This is the code I use for this:
Code:
    case @animation_count
      when 0
        @sprite_static.bitmap = RPG::Cache.picture("static01.png")
      when 3
        @sprite_static.bitmap = RPG::Cache.picture("static02.png")
      when 6
        @sprite_static.bitmap = RPG::Cache.picture("static03.png")
      when 9
        @sprite_static.bitmap = RPG::Cache.picture("static04.png")
      when 12
        @sprite_static.bitmap = RPG::Cache.picture("static05.png")
      when 15
        @animation_count = -1
    end
    @animation_count += 1

And now let's test it out. Well it doesn't look too amazingly nice, too patterned, so let's just decrease the opacity some, go back up to where you declared the graphic, and add in @sprite_static.opacity = 60. I'd just go back and edit the pictures (because the odd flashing does look like it calls for it), but I'm feeling lazy so I'll just downplay the effect so you don't notice it. Make sure to dispose of the graphics, and let's move on.

The title text seems a good next stop I'd dare say. Make two graphics called @sprite_text and @sprite_textcover. Set the graphics for them to text.png and text_cover.png respectively, and then add in a @sprite_textcover.x = -100 afterwards to make it start completely covering @sprite_text's graphic.

Let's go down to our loop do and just under it add in some code to slowly bring out the cover to reveal the title. We'll add this:
Code:
      if @sprite_textcover.x <= 640
        @sprite_textcover.x += 2
      end

We'll keep it relatively simple for now, we'll be 'prettying' things up last. Well actually that's the phase we're going on to now, but we're starting with the buttons (since they've looked far too ugly for far too long really). And of course the last thought I nearly forget, make sure to dispose of the graphics.

Well I would be doing that except I have to leave so to the two people that find this interesting, wait a while, I'll finish it.
 
There is a reason nobody read this Andy, the pictures are HUGE and take FOREVER to load. Also, you skip over some key details with the images. I really don't see how you got from Picture A to Picture C.
 

EJlol

Member

Code:
case @animation_count
      when 0
        @sprite_static.bitmap = RPG::Cache.picture("static01.png")
      when 3
        @sprite_static.bitmap = RPG::Cache.picture("static02.png")
      when 6
        @sprite_static.bitmap = RPG::Cache.picture("static03.png")
      when 9
        @sprite_static.bitmap = RPG::Cache.picture("static04.png")
      when 12
        @sprite_static.bitmap = RPG::Cache.picture("static05.png")
      when 15
        @animation_count = 0
    end
    @animation_count += 1

You made an error there, when @animation_count == 15 he reset it to 0. After that you add 1. Which mean he will never load static01.png.
 
EJlol;217503 said:
Code:
case @animation_count
      when 0
        @sprite_static.bitmap = RPG::Cache.picture("static01.png")
      when 3
        @sprite_static.bitmap = RPG::Cache.picture("static02.png")
      when 6
        @sprite_static.bitmap = RPG::Cache.picture("static03.png")
      when 9
        @sprite_static.bitmap = RPG::Cache.picture("static04.png")
      when 12
        @sprite_static.bitmap = RPG::Cache.picture("static05.png")
      when 15
        @animation_count = 0
    end
    @animation_count += 1

You made an error there, when @animation_count == 15 he reset it to 0. After that you add 1. Which mean he will never load static01.png.

oh good point, I bet I've made that mistake with every one of these I've made. I'll just change the when 15 to set it to -1 or something, decently quick fix. How silly of me, I don't know ruby so I'm expecting to make thousands of syntax errors or use the most inefficient design possible, and I make mistakes that have nothing to do with ruby.

oh also Prexus, I don't quite get what you're talking about. Do you mean there's not enough instruction IN the images, or that I missed a key point in describing what was going on, or I missed some big step I had just not thought about in between the 1st and 3rd images?

EDIT: oh and I suppose I'll fix the first thing you were talking about by using thumbnails or something. That should cut down on load times a bit better.
 

Fokuz

Member

I have tried this out, but it didnt turn out so good... :P

Also how do you save just a layer?

You should have pictures how you did this, and write under them a little more detailed. Everything is pretty blurry.

Anyhow, I will keep trying!
 
To save only a layer, click the little eyes (in photoshop) or check boxes (paint.net) to make the other layers invisible. Then save as a flattened image. You can undo the flattening and continue your work.
 
Or instead of going thru that hastle of Flatteing and making invisble and blah blah, you could just copy past to new and save, Just if you want to save a Hastle O_O

-RpgMakerMaster
 
(Old topic, I know.)

Very helpful though! I'm terrible with scripting, but this tutorial really helped with setting up my intro title screen. Thanks!

I'll get this scripting down eventually..
 
Prexus;216928 said:
I really don't see how you got from Picture A to Picture C.

Judging by the final outcome I'd say he went from Picture A to Picture Z. Anyways, I'll have to try this, also you should go into more detail on how you finished the graphical part of it, which is probably why some people clicked this.

::EDIT::
Sorry, I'm tired and didn't realize that this was an old post.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top