Super Doctor Who!

  • ALPHA 1.0 -

THIS POST IS OUTDATED. CHECK LATEST PAGES FOR UP TO DATE GAME CONTENTS AND VERSION

Key Features:

  • Ability to roam around 2 levels.

  • Ability to play as Matt Smith.

  • Daleks!

  • Sonic Screwdrivers that can open doors (Daleks have sonic probes too, which adds an interesting mechanic)

    Doctor Who fans unite! I am creating a Doctor Who game sort of like Mario, only it will be a lot better! And it, including the music, is in 8 bit (Currently only "Im The Doctor" and the "Doctor Who Theme", Heres more about it. The idea is you have your character, at the moment it is only Matt Smith, and you can roam levels freely and without lag thanks to my own custom built version of lwjgl. Currently it features a Level Creator, The Doctor, 1 Enemy (Working and Talking Daleks with Full AI true to the show!), and a lot more I am probably forgetting. [b]Screenshots are at bottom.
    

[/b]

If you do not want to search the thread for updates and downloads, the download should be this link at all times: https://dl.dropboxusercontent.com/s/bj7r1fc3d7sud0o/doctor.zip?dl=1&token_hash=AAGX_pVVs7ks3d9aoTZMmhZujRw88MTQDTP-Eno8-v4xFA

Other stuff:

Older snaps:

Images aren’t showing up. :-\ Click on the image (on the imgur page) to bring up just the image. Then copy that url. eg: http://i.imgur.com/odSbYh8.png

[Edit] Nevermind you fixed it!

Ah, a whovian I see.

The art seems decent, but you should release a playable demo. Even if there is only moving around, it is still good to get some opinions.

Beware, you MIGHT run into some issues with copyright, unless you acknowledge in the game that you Doctor Who is property of BBC. I’m no lawyer, but I think most fan-made games have to do this.

Good luck!

-wes

Also, your XML idea is neat, but very large and inefficient. You should not have to use XML where you could just use IDs, otherwise you will take longer to parse the levels, and take up more space.

Think about it; which is bigger?


0 0 0 1 0 0 1 2 0 2 0 0 1 0

or


<entry key"0">EtcBlock</entry>
<entry key"0">EtcBlock</entry>
<entry key"0">EtcBlock</entry>
<entry key"1">AotherEtcBlock</entry>
<entry key"0">EtcBlock</entry>

It is a pretty standard technique for tile-based games.

No res folder, but if you add in ALL natives, it will run anywhere.

FileNotFound for level .xml’s and pictures, forgot something? :stuck_out_tongue:

This is pretty standard.


public class Doctor extends BritishComedy {
    
    ...
    
    public float HP = 100;
    
    public void hurt(float hurtamount) {
        HP -= hurtamount;
    }
    
    ...
    
}

Each enemy can have a different hurt amounts, and hit the doctor whenever he is too close.

But wait! There’s more!

When you are hit, the doctor needs to be knocked back, and have a grace period for 3 seconds in which the doctor cannot be hurt, giving time for the doctor to fight or flight. This should be indicated this by either a red tint* on the doctor, or flashing his sprite for as long as he is in the grace period.
* Optional, but a fun little thing to add: have a whole bunch of different sprites of ALL the doctors, and cycle through them each time you get hit. If you have a story though, don’t do this.

I hope this helped you!
-wes

Here’s a start on all the doctors!
I present to you… Hartnell!

That image is blown up so you can see it on JGO. Actual image.

Wessles you give away so much art :slight_smile:

They could leave a smoking hull with a hole in it…
Also they should be a lot harder to kill.
Nice idea!

What? I can’t help my fandom of the Doctor, generic space shooters!

I hear you! I’m making my own engine as well. :point: It is made on LWJGL, and I have been working on it for a bit.
I too do not take the easy way out!

Weeping angels will be easy to make sprites for. No need to animate. ;D

Would require lighting, and some simple 2D raycasting. (or raytracing if you want mirrors or something that changes the line-of-sight)

The problem is of course it turns it from a simple platformer into a more horror-like one, due to the restricted view.
However, if you want to go down that path, it will give the game a much better atmosphere, at the cost of more difficult navigation.

The simplest solution is, when rendering, draw a line from the tile to the player, and if there are any opaque tiles in the way, don’t draw that block.
After that you could try adding different effects to the algorithm, like having the view fade off to black, instead of just being instant.

Once you’ve done that, you can just apply the same algorithm to the weeping angels, allowing them to move only when there are tiles in the way.

Another solution is to do it like in Droid Assault. The whole world is rendered normally, but entities are only drawn if they are in the line of sight. Google Droid Assault or find it on this site to see what I mean.
The downside, however, is that it may get weird seeing enemies fade in and out of view as you/they move around.

Obviously, weeping angels will be one of the more difficult enemies to implement, so leaving them out is perfectly fine.

Angels: You could, maybe should use different envirements, some with lighting, some without.
No idea sorry…

Crap. It’s gone.

Who blinked?

I would probably do something about the art.

The scale of the level doesn’t match up to the scale of the player.

That’s all I have to say really. The art could be a bit more detailed.

  • Jev.

Ermm… tries not to point out the obvious

Fails
You can make great art even in low resolution. Not saying that your’s isn’t, but I couldn’t let that go uncorrected…

Detailed != high res. Just saying.

If you want effective and fitting art, I would stick to an 8-bit color palette, limit and restrict the size of every sprite, and then add as much ‘detail’ as you can with those limitations.

‘8-bit’ games that you saw on the early Nintendo consoles didn’t have art like this at all. The developers had very little colors and limited resources, they had to pack as much detail into a sprite as they could, and damn well they did.

If you want an example, take a look at this mega-man screenshot.

  • Jev

Other than those return null statements, and the oddly formatted code, I see nothing really wrong with it. There are better choices, sure, but I guess yours works.