Author Topic: [NDS] FPS Maker  (Read 19796 times)

0 Members and 1 Guest are viewing this topic.

Offline smealum

  • Neo-Newbie
  • Sr. Member
  • *
  • Posts: 265
    • Smea's DevBlog
[NDS] FPS Maker
« on: August 21, 2012, 05:54:23 AM »
Nickname: smealum
Project Name: FPS Maker
From: France
Division: APP
Platform: NDS
Original Enter: YES
Support Motion: NO
In last NEO Compo this project have won in the top 10: NO

NOTE : anyone planning on using or judging this should really read my tutorial here : http://www.neoflash.com/forum/index.php/topic,7480.msg53284.html#msg53284  ::sm-09.gif::



FPS Maker is in essence a first person shooter-type game engine for the DS accompanied by an embedded level editor. The idea is to allow people to make their own games on the go.
The current version is functional but not quite complete as a few features are missing from the editor itself (the material editor mostly) and a whole lot of the engine's features are only partly implemented. Nevertheless, I was able to use the editor this morning to in only a few hours create ACOTSYE.

I'll add a more in-depth documentation later, i need to get some sleep right now. But for eager learners, I've included lalala.map which is the basically source file for ACOTSYE's world, so you can try and learn from that in the meantime ! :)
Also, here's an overview of the tools at your disposal (more will appear depending on what you've selected) :


Download : http://smealum.net/FPSM/FPSMAKER.zip
« Last Edit: August 24, 2012, 04:52:31 AM by smealum »

Offline ChillyWilly

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1751
  • Just a coding machine.
Re: [NDS] FPS Maker
« Reply #1 on: August 21, 2012, 08:47:38 AM »
Very interesting idea - make the editor on the console, too.

One question - the game core isn't based on Yeti3D, is it? I noticed you used Yeti in the title of the thread with your game.

Offline 10$man

  • Newbie
  • *
  • Posts: 46
  • NEO newbie
Re: [NDS] FPS Maker
« Reply #2 on: August 21, 2012, 10:25:40 AM »
An FPS maker on the DS O_O
This is quite impressive.

in the info, you said:
Division: GAME
...
Did you mean APP?
« Last Edit: August 21, 2012, 11:13:38 AM by 10$man »

Offline PypeBros

  • Newbie
  • *
  • Posts: 30
  • homebrewer
    • Bilou Homebrew's Blog.
Re: [NDS] FPS Maker
« Reply #3 on: August 21, 2012, 02:14:24 PM »
now I know I cannot win the compo :P
Enjoy Apple Assault v1.4 with polished gameplay and graphics

Offline smealum

  • Neo-Newbie
  • Sr. Member
  • *
  • Posts: 265
    • Smea's DevBlog
Re: [NDS] FPS Maker
« Reply #4 on: August 21, 2012, 07:47:30 PM »
Very interesting idea - make the editor on the console, too.

One question - the game core isn't based on Yeti3D, is it? I noticed you used Yeti in the title of the thread with your game.
Now, the engine is entirely hardware based and written from scratch. (well, except for MD2 rendering which uses tfc duke's implementation as a basis)
The reason the other game has Yeti in it is that the enemies are Yetis.  ~sm-42.gif~
(the game ACOTSYE is based on though, ACOTv8RE ( http://smealum.net/acot-V8-re/ ) ran in a poorly optimized version of yeti3D GPL)
(also, the way my engine works is somewhat inspired by yeti3D's maps in that rooms are defined by floor and ceiling height values for every tile and hardly anything more)

An FPS maker on the DS O_O
This is quite impressive.

in the info, you said:
Division: GAME
...
Did you mean APP?
Right, thanks for noticing, fixed it.  ~sm-35.gif~
« Last Edit: August 21, 2012, 07:50:24 PM by smealum »

Offline ChillyWilly

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1751
  • Just a coding machine.
Re: [NDS] FPS Maker
« Reply #5 on: August 22, 2012, 01:50:28 AM »
Now, the engine is entirely hardware based and written from scratch. (well, except for MD2 rendering which uses tfc duke's implementation as a basis)
The reason the other game has Yeti in it is that the enemies are Yetis.  ~sm-42.gif~
(the game ACOTSYE is based on though, ACOTv8RE ( http://smealum.net/acot-V8-re/ ) ran in a poorly optimized version of yeti3D GPL)
(also, the way my engine works is somewhat inspired by yeti3D's maps in that rooms are defined by floor and ceiling height values for every tile and hardly anything more)

It didn't look like Yeti3D to me... makes sense knowing what one of the enemies are.  ~sm-82.gif~.gif

Nice job on the engine. Most folks never get as far as you have. One other question if you don't mind... why did you switch from Yeti3D to your own engine instead of making improvements to Yeti3D? Just curious... did you want to work on your own engine after looking at Yeti? I've done that myself on other things - work on something and then go "I could do that... and maybe better!"
 :D

Offline smealum

  • Neo-Newbie
  • Sr. Member
  • *
  • Posts: 265
    • Smea's DevBlog
Re: [NDS] FPS Maker
« Reply #6 on: August 22, 2012, 02:07:38 AM »
It didn't look like Yeti3D to me... makes sense knowing what one of the enemies are.  ~sm-82.gif~.gif

Nice job on the engine. Most folks never get as far as you have. One other question if you don't mind... why did you switch from Yeti3D to your own engine instead of making improvements to Yeti3D? Just curious... did you want to work on your own engine after looking at Yeti? I've done that myself on other things - work on something and then go "I could do that... and maybe better!"
 :D
well I only used yeti3D in 2007 or 2008 and back then I hardly knew anything about 3D, the DS's hardware or any kind of advanced programming for that matter, so when I ported yeti3D I didn't really know what I was doing.  ~sm-54.gif~.gif I've gotten better though and since I thought I could do some cool new things I'd never done on the DS (lightmaps being one of them) I made this. Plus, it doesn't really make sense to use a software engine when the DS has a hardware 3D graphics unit. :P

Offline ChillyWilly

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1751
  • Just a coding machine.
Re: [NDS] FPS Maker
« Reply #7 on: August 22, 2012, 02:15:33 AM »
well I only used yeti3D in 2007 or 2008 and back then I hardly knew anything about 3D, the DS's hardware or any kind of advanced programming for that matter, so when I ported yeti3D I didn't really know what I was doing.  ~sm-54.gif~.gif I've gotten better though and since I thought I could do some cool new things I'd never done on the DS (lightmaps being one of them) I made this.

I imagine it was quite the learning experience.  ::sm-22.gif::

Quote
Plus, it doesn't really make sense to use a software engine when the DS has a hardware 3D graphics unit. :P

Yes, that is true. Especially since the current devkitARM has full support for DS 3D. That was my issue on the N64 - the only support yet for hardware 3D is the leaked Nintendo SDK, which is not so good for people trying to do homebrew. It's old as sin and vulnerable to takedowns by Nintendo. That's one thing I've been looking forward to on libdragon - the day Sean adds a hardware 3D command to go with the 2D he has right now.


Offline smealum

  • Neo-Newbie
  • Sr. Member
  • *
  • Posts: 265
    • Smea's DevBlog
Re: [NDS] FPS Maker
« Reply #8 on: August 22, 2012, 02:33:12 AM »
I imagine it was quite the learning experience.  ::sm-22.gif::

Yes, that is true. Especially since the current devkitARM has full support for DS 3D. That was my issue on the N64 - the only support yet for hardware 3D is the leaked Nintendo SDK, which is not so good for people trying to do homebrew. It's old as sin and vulnerable to takedowns by Nintendo. That's one thing I've been looking forward to on libdragon - the day Sean adds a hardware 3D command to go with the 2D he has right now.
Yeah, what's great about the DS is how well documented it is; none of this would have been possible without GBAtek for instance.   ::sm-03::
« Last Edit: August 22, 2012, 02:36:34 AM by smealum »

Offline smealum

  • Neo-Newbie
  • Sr. Member
  • *
  • Posts: 265
    • Smea's DevBlog
Re: [NDS] FPS Maker
« Reply #9 on: August 24, 2012, 04:51:30 AM »
And for everyone interested in trying this (judges included, please read this), here's the first tutorial on how to use the editor !

Day 1 :

Today we're going to go over the basics of using FPS maker, and by the end you'll have made the first room for your game !
It'll look something like this :


I - Installing

Installation is very straightforward. Both editor.nds and baregame.nds only use libfat and not nitroFS, which means you can place editor.nds and baregame.nds anywhere you want, but you have to place the /fpsm/ folder at the root of your card.
So installation happens in just one step : copying all your files to your cartridge and making sure fpsm is in the root directory. Ideally it should look something like this :


II - Editor basics

Now that you've installed the editor and the game engine, go on and launch editor.nds. You should be greeted by this screen :

If your screen doesn't quite look like that (most likely case would be the button icons not showing up), then you probably did not install everything correctly. Check the location of your fpsm directory and try again !

Now to go over the editor's controls :

- the D-PAD is used to move the grid around
- R and L are used to zoom in and out of the grid
- ABXY are also used, but we'll see what for later on, don't touch them for now !

So just go ahead, move the grid around and see how that works... done ? Good. There are two tool windows open (we'll see about the material window later on), so let's take a look at them.

- the first one is the file toolbar; it's very classic and straightforward :


- the second one is more interesting, and you'll be using it a lot :


So now that we've identified the basics of the editor, we can finally start making stuff !

III - Your first room

Now, the "create room" tool should be selected by default, but just in case, I'll say it : select the "create room" tool. Now point your stylus at the grid and drag it around. A rectangle appears ! This is your first room. Don't make it too big or too small, we'll keep things simple for now. (tip : to make your rooms bigger, don't forget you can pan the grid and zoom in/out; and know that you can do it while creating your room too !)
Your screen should now look something like this :

You'll probably notice some ugly colored squares appeared on your top screen (not necessarily, depending on where you placed your room). Now I can tell you : the top screen is used to visualize your map as you create and modify it. What you're seeing right now is only a temporary rendering of your room before its geometry is processed; it'll look better later on, trust me.
I can now also tell you what the ABXY buttons are for : they're used to navigate about the map preview. Go ahead, try it. Just try not to go too far.

Anyways, now that we have our first room, we can actually try the tools we have at our disposal.

- first, we'll try the most straightforward, the "move room" tool. All you have to do to use it is select it, then click on a room and drag it to where you want it to be.
- second, the "resize room" tool. This one is a little harder to use as you have to drag one of your room's corners for it to work.
- finally, the select room tool, which allows you to select a room for editing.

So do that, select your room so we can edit it ! Once selected, you should see something like this :


You'll notice two new windows just appeared. We'll only worry about one for now, the tile edit


Obviously, you shouldn't press the "delete room" button unless you want to, you know, delete your room. Let's take a look at the "select tiles" tools. Press the button and then select an area within your room. Once your done, you should have a new window :


Now you can use these tools to modify your room ! If you press the "up" button, you'll notice your tiles will go up. And if you press the "down" button, I'm sure you can guess what happens. So do that, select areas and press up/down as you see fit. I'll make stairs as an example :


As you can see, only the floor changed height, which is a problem because my stairs now head straight into the ceiling. That's why you can also edit ceiling values by pressing the "edit floor or ceiling" button. By switching to the ceiling, you can now up its height :


I'll also tell you what the "cube" button is right under the "down" button; it's actually a "make wall" button; it sets all selected tiles to walls. Walls can be recognized in the editor grid as red tiles. For example :


Now the thing is though, the preview still looks terrible and like nothing anyone would ever want to play. So let's make it nicer ! In order to do that, simply press the "process materials and lighting" button. Wait a second, and you should now see something like this :


The preview disappeared ! That's because we forgot to put lights into our room, so we'll just put one in quickly and be done. For this, we'll need the entity toolbar :


Now, just select the "create light" tool and click somewhere in your room. You'll notice a lightbulb appeared in the editor and the preview ! That's your lightsource. We'll learn how to edit it later on (a tip though : just select it with the "select entity" tool, things should be clear from there).


Now that we have a lightsource, let's press the "process materials and lighting" button again. This time it'll take a bit longer, but since the scene is simple it shouldn't be too long. Be aware though that the more complex your room and the more light sources you have, the longer processing will be. In extreme cases, it can take several minutes ! So don't panick, a long wait does not mean the editor has crashed.
Once it's done, you should have something like this :


And tadaa ! Your first room. This is all for now. In the next lesson we'll learn how to apply materials, edit lightsources, add enemies and maybe even create doors between rooms !

Appendix :
Now that you've created your room, you might want to try it. Doing so is very simple; just make sure it's been processed (unprocessed rooms aren't save, be very careful about that !), then press the "save map" button, and your map will be written to lalala.map in your fpsm folder.
Now, just close the editor, start baregame.nds and enjoy your newly created room. :)
« Last Edit: August 24, 2012, 04:54:53 AM by smealum »

Offline blastyrant

  • Newbie
  • *
  • Posts: 44
Re: [NDS] FPS Maker
« Reply #10 on: August 24, 2012, 05:01:21 AM »
the completed tutorial should be in a pdf and included with the final release.

Offline smealum

  • Neo-Newbie
  • Sr. Member
  • *
  • Posts: 265
    • Smea's DevBlog
Re: [NDS] FPS Maker
« Reply #11 on: August 24, 2012, 05:04:59 AM »
the completed tutorial should be in a pdf and included with the final release.
Yeah that's a good idea. It should be fine just having it here for now since it's pretty much the only place the app has been posted anyway.  ~sm-78.gif~.gif

Offline blastyrant

  • Newbie
  • *
  • Posts: 44
Re: [NDS] FPS Maker
« Reply #12 on: August 24, 2012, 05:51:38 AM »
where are you headed with this project? what are your goals? is it going to reach a full fledged engine with the ability to add cut scenes, intros, credits, custom music and sound efx, etc? will there ever be a way to trade our levels over wifi or perhaps upload to a central point (ie: colors, stillaliveds, etc)? are you going to include more weapons, allow us to import our own textures, etc?

this is a pretty amazing projects and something i never expected to see on the ds. the touch screen makes the ds an ideal place for this project. i hope that you continue to develop it into some type of app that receives daily use. this is the type of project that can become 3ds-ware. if colors can do it with a simple drawing program then you can surely do it with a fps game maker!

Offline smealum

  • Neo-Newbie
  • Sr. Member
  • *
  • Posts: 265
    • Smea's DevBlog
Re: [NDS] FPS Maker
« Reply #13 on: August 26, 2012, 07:24:23 PM »
where are you headed with this project? what are your goals? is it going to reach a full fledged engine with the ability to add cut scenes, intros, credits, custom music and sound efx, etc? will there ever be a way to trade our levels over wifi or perhaps upload to a central point (ie: colors, stillaliveds, etc)? are you going to include more weapons, allow us to import our own textures, etc?

this is a pretty amazing projects and something i never expected to see on the ds. the touch screen makes the ds an ideal place for this project. i hope that you continue to develop it into some type of app that receives daily use. this is the type of project that can become 3ds-ware. if colors can do it with a simple drawing program then you can surely do it with a fps game maker!
The idea is to have a full fledged editor, yes. Probably not real-time cutscenes but more like dialogues, but still. The ability to download levels over wifi is troublesome because lightmaps take up a lot of space and the current implementation of the DS's wifi isn't great. I've already done something like it with arsenal though so it wouldn't be impossible. And yeah, a material editor which allows for people to import textures is planned; I wanted it to be in this release but I didn't have enough time.  ~sm-68.gif~.gif

ALSO, it's been brought to my attention that I forgot a few things made in a hurry specifically for ACOTSYE in the main engine code. Because of this, right now the spawn point has been moved to (-7,6) instead of (0,0) (which is indicated by a 0 on the grid) and the game will automatically end if there are no enemies in game. Here's a fixed version of the engine : http://smealum.net/FPSM/baregame_260812.nds
« Last Edit: August 26, 2012, 07:38:08 PM by smealum »