Page 1 of 4

"Terus" project (tech demo 2)

Posted: Thu Aug 26, 2010 10:26 am
by Taehl
My good friend Ensayia and I are working together on a little game, a remake of a classic. You very well may have seen it on your favorite old system, or maybe a more modern remake. Anyone want to take a guess at which game it is?


http://www.youtube.com/watch?v=HorJ6RPsPUg


News:
We now have a tech demo ready for everyone. It features five simple levels, a working main menu, and a big helping of awesome. And now, thanks to Love 0.7, the sound works.

Download

Re: Unnamed project teaser

Posted: Thu Aug 26, 2010 11:05 am
by Tesselode
Action 52?

Re: "Terus" project teaser

Posted: Fri Aug 27, 2010 11:24 pm
by Taehl
Noasshat


(If Youtube is having issues, you can watch the clip here.)

Demonstrated are the polar coordinate system (including edge warping)), some WIP graphics, and a pretty thorough test of the AI system.

The enemy AI package is thus:

Code: Select all

AI={
	{AI.leave},
	[t+1] = {AI.clockwise},
	[t+1.5] = {AI.leave},
	[t+2.5] = {AI.counterclockwise},
	[t+3.5] = {AI.wobble},
	[t+5] = {AI.straight},
}
In other words, each ship will go outward for 1 second, go clockwise for half a second, go outward again for 1 second, go counterclockwise for 1 second, wobble for 1.5 seconds, and then go in a straight line (in this case, a diagonal due to the wobbling). Though not used in this case, multiple AI actions can be run at the same time. The stars were also assigned synchronized AI for test purposes, those are pointed out in the video. Also, the music is random, it's not going to be in the game.

Re: "Terus" project teaser

Posted: Sat Aug 28, 2010 3:36 am
by Tesselode
Now it's looking a lot like that one arcade game which I can't remember the name of.

Re: "Terus" project teaser

Posted: Sun Aug 29, 2010 4:19 am
by Taehl
Progress has been made. We have a simple main menu (which can be brought up in-game, as a pause menu), sound effects, more AI actions, shooting, and homing missiles (which can be used either for or against the player). Next up: Collision detection, levels, and an options screen.

Image

If there are any musicians out there who may be interested in contributing, we would appreciate the help.

Re: "Terus" project teaser

Posted: Sun Aug 29, 2010 6:18 am
by Ensayia
If anyone has any ideas for a decent 2d collision without using the physics engine, we could use input on that as well. Our goal is to not use the physics engine if at all possible.

Re: "Terus" project teaser

Posted: Sun Aug 29, 2010 6:35 am
by nevon
Ensayia wrote:If anyone has any ideas for a decent 2d collision without using the physics engine, we could use input on that as well. Our goal is to not use the physics engine if at all possible.
What type of collision are you looking for?

Re: "Terus" project teaser

Posted: Sun Aug 29, 2010 3:20 pm
by Luiji

Re: "Terus" project teaser

Posted: Mon Aug 30, 2010 11:05 pm
by scirath
Sinistar? Tyrian? (One the remake of the other, if I remember correctly...)

Re: "Terus" project teaser

Posted: Tue Aug 31, 2010 5:56 am
by Taehl
Fairly close, but no. Note the polar coordinate thing, where you shoot inward from the edges, as opposed to from one side to the other.

Level format is done (assuming I can't think up improvements of optimizations), and quite simple. Here's an example level:

Code: Select all

level = {
   name = "Test level 1",
   author = "Taehl",
--   music = music.boss,   -- We need more songs :(
   init = function()       -- Called once when level is loaded
      add_stars(60)        -- Add some stars
   end,
   update = function()     -- Called every frame
      -- Nothing special in this level. Generally, level.update() shouldn't need to contain anything.
   end,
   events = {              -- Values are executed at key <= gameTime seconds
      [4] = function()   
         add_wave("enemy1", 6, 0.5)   -- At 4 seconds into the map, spawn 6 enemies every 0.5 seconds, using default properties
      end,
      [8] = function()
         local boss = add_object("boss1", {}, true)   -- At 8 seconds, spawn the boss1 object with default properties as a unique (named) object
         level.targets[boss] = true   -- Add the boss to the targets list
      end,
   },
   targets = {},           -- A list of objects that need to be killed for victory (enemy waves are automatically added unless overridden)
   victory = {             -- When this table is entirely true, the player wins
      function() if gameTime > 10 then return true end end,   -- At least 10 seconds must have passed
      function() for k,v in pairs(level.targets) do return false end return true end,   -- All enemies and the boss must be killed
   },
}
With a bit of Lua knowledge (and maybe a peek at the game's code, which I'm leaving very well-commented just for this reason), maps should be able to contain mods very easily. For instance, to change the player's ship into something else, all it takes is to use this in the level's table:

Code: Select all

level = {
	init = function() 	-- Called once when level is loaded
		objects.player.image = images.enemy1	-- TEST: Shows how moddable Terus is
	end,
}