"Terus" project (tech demo 2)

Show off your games, demos and other (playable) creations.
User avatar
Taehl
Dreaming in associative arrays
Posts: 1024
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

"Terus" project (tech demo 2)

Post by Taehl » Thu Aug 26, 2010 10:26 am

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
Last edited by Taehl on Tue Sep 21, 2010 8:44 pm, edited 5 times in total.
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.

User avatar
Tesselode
Party member
Posts: 555
Joined: Fri Jul 23, 2010 7:55 pm

Re: Unnamed project teaser

Post by Tesselode » Thu Aug 26, 2010 11:05 am

Action 52?

User avatar
Taehl
Dreaming in associative arrays
Posts: 1024
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

Re: "Terus" project teaser

Post by Taehl » Fri Aug 27, 2010 11:24 pm

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.
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.

User avatar
Tesselode
Party member
Posts: 555
Joined: Fri Jul 23, 2010 7:55 pm

Re: "Terus" project teaser

Post by Tesselode » Sat Aug 28, 2010 3:36 am

Now it's looking a lot like that one arcade game which I can't remember the name of.

User avatar
Taehl
Dreaming in associative arrays
Posts: 1024
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

Re: "Terus" project teaser

Post by Taehl » Sun Aug 29, 2010 4:19 am

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.
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.

User avatar
Ensayia
Party member
Posts: 399
Joined: Sat Jun 12, 2010 7:57 pm

Re: "Terus" project teaser

Post by Ensayia » Sun Aug 29, 2010 6:18 am

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.

User avatar
nevon
Commander of the Circuloids
Posts: 938
Joined: Thu Feb 14, 2008 8:25 pm
Location: Stockholm, Sweden
Contact:

Re: "Terus" project teaser

Post by nevon » Sun Aug 29, 2010 6:35 am

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?

User avatar
Luiji
Party member
Posts: 396
Joined: Mon May 17, 2010 6:59 pm

Re: "Terus" project teaser

Post by Luiji » Sun Aug 29, 2010 3:20 pm

Good bye.

scirath
Citizen
Posts: 85
Joined: Mon Feb 23, 2009 4:44 am

Re: "Terus" project teaser

Post by scirath » Mon Aug 30, 2010 11:05 pm

Sinistar? Tyrian? (One the remake of the other, if I remember correctly...)
(USER MIGHT BE BANNED FOR THIS POST.)

User avatar
Taehl
Dreaming in associative arrays
Posts: 1024
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

Re: "Terus" project teaser

Post by Taehl » Tue Aug 31, 2010 5:56 am

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,
}
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.

Post Reply

Who is online

Users browsing this forum: No registered users and 20 guests