Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Work in Progress / Let's Make: A game based around Earth

Author
Message
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 27th Dec 2009 08:44
Hello forum!

Preface:

As you won't know, I'm a great fan of Let's Play(LP) videos, whereby someone records themselves playing a game and gives commentary as they play, and unlike video walkthroughs, they usually don't know much about the game so it's fun to watch them mess up all the time.

Now, I don't intend to record myself coding because as you can imagine, that would be filled with so much fast-paced action that most members here would have seizures. But instead, I intend to create a game while giving lots of information about how I implement various aspects, including source code, methods you shouldn't waste your time on, etc.

Like all great LPers, I will be taking suggestions about practically everything, so instead of a 'Let's Watch You Make' it's a 'Let's Make'. So in effect, it's your job to suggest ideas, and I will be the arbiter as to what ideas are good and which suck(though you can still discuss this).

I will be updating this post with the current development state when I can be bothered, however the actual development stages will be starting from my next post, that way I don't overwrite development details as I progress.

The game will be made using GDK with VSC++ 2008 express, I will be writing all the code and making all the media(unless someone donates some that doesn't suck) except for the audio, for that I'll probably use Peacemaker(Lucifer)'s music as I did with my last game as it's awesome, and free!

If the game doesn't suck then I will perhaps try selling it, if it's not good enough then I'll know to blame you guys . Anyone giving valid input or suggestions will be credited appropriately.

Also, I'm aware that this thread technically lacks virtually any content, but given the nature of it I assume this is excusable. I didn't create this thread in Game Design because once the initial ideas roll in, this will be pretty much a normal WIP thread, as they usually contain lots of suggestions.

dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 27th Dec 2009 08:44 Edited at: 27th Dec 2009 08:44
Preliminary idea:

As the title may have eluded to, this game will be based around Earth, why? Because I've written some awesome Earth shaders that I should put to good use. Other than this, everything else is up in the air.

There are however, limits on what I can be bothered to make: ideally I can get the bulk of the game done within a month, but I hope to get something playable done by new year's day. Also, I won't be making anything online, or at least I won't be adding any such functionality for ages. Don't suggest things that will take ages to implement, like texturing the surface using the Google Maps API, I want to make a small game that can be finished fairly quickly and hopefully have some room for expansion.

Anyway, I have some quick ideas I thought of but you can suggest something totally different:

* Tower Defence - Earth is the tower, you construct satellites around Earth that defend against asteroids and aliens. When placing units you perhaps click a position and drag it to set the orbital speed and such.

* Defend Earth - Earth is being attacked by aliens, you control a single spaceship which you can upgrade with parts and you use it to fly around Earth and shoot anything that moves.

* Leave Earth - You control a space ship whose job it is to reach various destinations, such as The Moon, Mars, etc. A vertically scrolling shooter where you dodge asteroids and stuff on the way there.

* Something Earth - All the artificial satellites around Earth have been infected with some computer virus and it's your job to destroy them. You control a space ship that begins on Earth and gradually you orbit Earth gaining altitude and you blow up everything on the way, including kamikaze satellites and fight final bosses like the ISS etc.

* Something else Earth - Earth is a massive battleship that you command, your job is to fly around the galaxy blowing up enemies like Mars which like you, happen to be armed with moons and stuff.


These are just some random ideas I thought up, if you have any new ones or modifications to these then great.

Here's a few pics of Earth so far: [1][2][3][4][5], the shaders work in space and in the atmosphere. But I'm already using 4k textures for the surface and it doesn't look that great close up so try not to suggest anything that requires a realistic sized Earth and close ups of the terrain, though if the Earth was small then this isn't too much of an issue.

So... post your ideas! Or else.

Plotinus
13
Years of Service
User Offline
Joined: 28th Mar 2009
Location:
Posted: 27th Dec 2009 11:03
I say go for the tower defence idea. That seems to me to be modest and achievable, but at the same time interesting and expandable.

It could be especially interesting if it's 3D tower defence, with the towers in space around the planet and the enemies coming towards the planet from all directions. It could be even more interesting if the "towers" that you place are satellites orbiting the Earth, which might move around it at various speeds or in various directions. You could choose to put up a satellite that orbits geosynchronously, to protect a particularly important spot on the planet's surface, or you could make it zip around the planet quickly, defending more area but less reliably.
JLMoondog
Moderator
13
Years of Service
User Offline
Joined: 18th Jan 2009
Location: Paradox
Posted: 27th Dec 2009 12:04
Your tower defense idea sounds similar to my planet defender concept in the game theory board. So I would go with that idea, you could even throw in a player controlled ship to help out in the heat of swarming waves of alien frenzy!

I'm also a fan of LP videos, so this should be interesting. Good luck.


Red Eye
14
Years of Service
User Offline
Joined: 15th Oct 2008
Location:
Posted: 27th Dec 2009 13:43
Well i u need any modeling, u can contact me on msn, i am interested.


Kryogenik
13
Years of Service
User Offline
Joined: 22nd Sep 2009
Location: Heidelberg, Germany
Posted: 27th Dec 2009 22:50
"I will be the arbiter as to what ideas are good and which suck"
"(unless someone donates some that doesn't suck)"
"If the game doesn't suck then I will perhaps try selling it"
You sure like saying that, don't you? Personally, I think tower defense is overused, but a space spin on it might be pretty good. I hated bloons tower defense Anyway, you can probably do a good job on whatever idea you get, I saw your physx competition entry with the island thing, it looked awesome Good luck guys.
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 27th Dec 2009 23:57
I would pick Tower Defence, but as Kryogenik says, it's such an overdone genre that it makes me hesitant to pick it. However, the vast majority of TD games have creeps run along a set path or one determined from your mazing, from what I recall, very few are based around them going directly toward the tower from all directions, especially ones set in space, so it may be okay to do. But if someone has a better idea then say so, as I want to start on the code soon.

Another idea is to incorporate TD with the 'Something else Earth' idea, so you send Earth to attack other planets, on the way you fight creeps and when you reach the planet it's like a boss battle where you maybe send creeps over to attack and you defend at the same time. But I guess that could be part of the whole later additions as it won't change the core game.

I also thought about making it slightly based on gravity, so enemies such as asteroids have decaying orbits into Earth, rather than just directly flying into it. And also have towers that act as black holes that can suck enemies in or slingshot them away or something.

Quote: "You could choose to put up a satellite that orbits geosynchronously, to protect a particularly important spot on the planet's surface, or you could make it zip around the planet quickly, defending more area but less reliably."


What would be on the planet's surface to protect?


Quote: "You sure like saying that, don't you?"


Yes; I should look up synonyms for it, else my posts will suck .

dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 1st Jan 2010 10:31
OK, update time:

I've mainly been organizing the framework so there's no flashy graphics just yet(next time, maybe).

The main thing that's slowing me down right now is that previously I wrote a GDK wrapper that had a million features, except I've changed my coding style quite a bit since I wrote it so I don't want to use it, I now use this style pretty much, so I'm kind of porting features over to my new one as I need them.

One (hopefully)interesting aspect about this engine is that I'm making it all pretty much event based, at least for the main states. For example, when the game is initially run I instance my MainMenu class and add it to the main application class' callback list. This then get called every loop, and if you transition to the main game then the Main Menu class deallocates itself and instances the GameMenu or whatever class. The game state is contingent upon my menu states as it is, whereas in most of my previous games I'd store a single variable for the 'gameState' and have a switch in my main loop and run various routines specific to that portion of code, this makes that far easier and results in something slightly similar to a Flying Spaghetti Monster.

One cool thing about this setup is that each menu class also has a list of callbacks, so if you click on a character it could spawn a new class that displays the info about that character and it'd automatically get updated when its parent menu does. It also allows you to easily make confirmation boxes, when you click a button it could spawn a class that displays: "Do you want to delete your character? [yes][no]" and this class could suspend input for its parent so you have to click one.

Game so far:




As you can see, you can spawn satellites, and the 3 spheres around Earth are the buildings which will eventually be things like lasers, construction yards, etc. The building at the top of the planet will have a 360 degree view, so placing a laser there would probably be wise. I plan to make it so that certain buildings you can make on the surface of the planet can construct satellites, once they build some you'll be able to select the building via the number keys and click where around the planet you want them. Currently all orbits are circular, but I've added a click and drag functionality to the spawning if you look closely, I just haven't got around to making the orbits ellipses based on this drag distance.

So in the end this will be a Tower Defence game as well as a kind of Shoot 'em Up, I haven't decided if you'll be able to move the planet or not though(currently you can). I'll also probably make it so you can pick different types of planets, so some have more build slots than others, some have larger possible orbit ranges for satellites etc(maybe this could be the difficulty setting?).

Also, if you noticed, in the video I have a ring around the planet to show the spawn area, this uses a shader which can also be used for planetary rings without the need to use a standard disc object as those can be sometimes complex to create and resize. Here's the shader for that:



The only thing you need to pass is the data for 'spawnRadius', the x component is the ring's innerRadius, the y component is 1.0f / ( outerRadius - innerRadius ). You can apply this shader to a plane, just make sure it has the same width/length as the outerRadius.

Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 14th Jan 2010 11:46
Great initiative and very interesting stuff
I guess someone will be asking for a demo soon

Please let me know if you need anything, so far it looks 'Made by Dark Coder'
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 18th Jan 2010 20:12
Update time again...

lua -

I've spent a while integrating lua scripting, using the luabind library to... bind lua to C++. The library is really good and is fully native C++, so there's no need to run any tools to grab data from your header files or anything.

I wrote a prototype for a template function that I specialize to initialize various areas of my engine:



For every class I then specialize this to fill the passed 'lua_state' with the luabind info, like so:



That may look really confusing, but the luabind lib overloads operators in crazy ways to give you pretty elegant syntax to bind classes/enums/methods/etc to lua very easily. That particular one binds my 3D Object class(wraps GDK's objects) which allows me to instance objects and alter them from lua, like so:




Resources -

I don't know why, but I seem to be unable to write code that prevents possible future additions from being implemented. I noticed the way media was being loaded was very unfriendly to mods(if I ever support them), so I wrote a very basic resource file manager, whereby I can pass it a bunch of file paths and whenever I attempt to load a media file(image, shader, etc) it searches all the resource paths until it finds a match, if not then it raises an exception. This is all easy stuff, but it means my application.lua(first auto-run script) can cache media from every mod, like so:



So eventually I'll write code to search for all valid mods and load them too, but that's not important right now. The 'Common' dir I add in is for the GUI media, as I wasn't sure how a mod would add to the GUI without replacing it. The mod.lua file just caches all planet/enemy/satellite/etc templates.


GUI -

I changed how I handle the GUI as well, it now uses lua for everything so I only have one 'Menu' class that has about 5 methods. This means the root menu is really cool:



Children get updated before their parents, so having the root menu draw the cursor causes it to always be on top. You may notice I use a lot of local variables in my scripts, this is because I only use 2 lua states across the whole engine(application(creeps, planets etc) and GUI), so storing the instance of a class in a 'this' variable would a very bad idea without it being local. I use very few states because binding the C++ classes to lua probably isn't the fastest thing in the world(I haven't tested it), you saw a snippet of one specialization to bind my gdk:bject class, well this is the main function I call to bind them all:



Yeah...


2D coordinates -

If you read my root GUI code you may notice I use some mystery Loc2D class( mouseLoc = Loc2D( Vec2i32( mousePos.x, mousePos.y ) ) ), this class stores 2 2D vectors, an integer and a float one. The float one signifies a percentage across the screen, so a coordinate of [0.5, 0.5], would be right in the centre. The integer vector is a pixel offset from this, in this case the mousePos.x/y values are pixel offsets, so I pass them to Loc2D's constructor, lua isn't very strict about typing so I had to stuff them in an integer vector so it knew which constructor to call.

Using such a coordinate system is vital for GUIs if you plan to support more resolutions than 1, because if you use only pixel positions then changing resolution will cause GUI elements to not fit. A very cheap way to get around this is to use a purely window based GUI, that way, changing the resolution just means there's more room to move the GUI elements around, another similar way is to position things relative to markers, like the left/right of the screen or something. But that won't work for all instances, thus this system easily allows you to create a GUI once, of course if you position and scale everything based on percentages then your GUI may look really strange on widescreen displays, and handling the text may not be so easy. But we'll cross that bridge when we come to it!


Last notes -

Most of these new additions have been purely behind the scenes, thus there's no point in me releasing a new video. However I did add in one creep that the satellites can now damage, currently they just drain its health when in range because I haven't written any bullet code. They also can't be destroyed, as handling their deallocation will be very fun, because the lua code can reference my C++ objects, so I can't just randomly delete them.

Anyway, input is still encouraged! I don't mind making this game up as I go along, but the whole point was that the community tells me what crap to add in, though because I've added so much scripting this may be easier? Once I finish the framework(very soon) I'll work on wrapping the game together and releasing it, I intend to finish the game code by the 24th, and then spend 1 week writing scripts, making media and finally pouring insane amounts of polish over it so I can release it on Feb 1st.

darkvee
17
Years of Service
User Offline
Joined: 18th Nov 2005
Location:
Posted: 19th Jan 2010 06:11
Hi Darkcoder Long time no see.
It looks like you on your way making another great game.
I just finished mine it's a 2D space shooter.

Well looks like your using that same trick you used with physix island about dropping objects on the surface.

How long do you think this game will take until you have it done?

darkvee
Diggsey
16
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 19th Jan 2010 15:46
1) Maybe the weapons should rotate with the earth (looks a bit odd atm)
2) Have the actual player be in a ship above the earth, and they can move around it, dodging alien attacks, with maybe a few objects in the way which are destroyed when hit.
3) Some enemies drop weapons/shields when destroyed, which spiral in towards the earth depending on the enemies motion when destroyed. When the player picks them up they can be attached to one of the five modules on the earth. They would either shield or protect the earth at that point.

Virtual Nomad
Moderator
16
Years of Service
Recently Online
Joined: 14th Dec 2005
Location: SF Bay Area, USA
Posted: 19th Jan 2010 20:46 Edited at: 19th Jan 2010 22:07
some ideas here:

"Level & Stage" gameplay (ie, Level 1 - Stages 1-10, Level 2 - Stages 1-10, etc.)
- each Level add 1 Earth-based Facility + 1 Tier to Upgrade maximums.
- each stage add to Intelligence Processing (IP) aka, scientists devoted to research = shorter build times

Installation Types
------------------
Headquarters (HQ) - Central Installation
Large Laser + Research & Development (R&D)
- Traits:
1) Full 360 degree "Range of Sight"
2) Upgradable Laser Range (1 ring per Level)
3) Intelligence Processing (IP) - Reverse Engineering of Alien technologies.

- Upgrades:
1) Laser Strength (damage)
2) Laser Ranges (distance from center)
3) Rate of Fire (Laser pulse frequency)
4) Number of lasers (1-4) ?
5) IP Rate increased automatically each Level.
Note: Upgrades to HQ automatic per Level/Stage to maintain & control game difficulty/stage progression?

Earth-based Weapons Installations:
- "Medium" Weapons - Laser, Rocket, Ranged "Pulses" (ie, jam Alien Ship nav systems within a projected Sphere of Influence?, etc)
- Add 1 per Level (see Earthbased Installation Progression graphic)
- Limited "Range of Sight" Cones

-Upgrades:
1) "Cone of Sight" (45, 90, 180 degrees (up to 360?))
2) "Range of Sight" (by Ring)
3) Additional Weapons per Installation

Satellites:
Research Satellites - "Gather intelligence" from nearby Alien (debris?). maybe Alien ships fall into orbit at current ring when destroyed. Gatherers sweep and collect debris as they orbit, adding to the Intelligence resource pool. maybe satellites send out probes (for visual experience)
- Upgrades:
1) Range
2) Amount of "Intelligence" gathered per salvage.

Weapons Satellites - standard stuff w/ standard upgrades.


all i have time for right now...

edit: i have a concern re: gameplay where, from what i see now, the obvious player tactic will be to concentrate fortification of the inner-most rings since they provide the most overall protection, leaving the outer rings a potential waste of space (pun intended ). to add value to the outer rings, how about adding a "shared" effectiveness whereby satellites in the outer rings can "leech" power/energy from lower-altitude satellites within their range, shutting those down (?) but increasing damage output or overall efectiveness of the outer-most satellite (additional effectiveness based on a percentage of the total effectiveness from all lower-altitude satellites within range). this "leeching" capability could also be a source for upgrades while providing varied gameplay (not to mention additional coding challenges for you ).

and, finally, i'll admit to not reading the prior posts thoroughly. i know i skipped mention of the "3 spheres around earth", etc, but wanted to offer initial thoughts asap since it appears you've put yourself on a timeline for this.

Virtual Nomad @ California, USA
AMD Phenom™ X4 9750 Quad-Core @ 2.4 GHz . 8 GB PC2-6400 RAM
ATI Radeon HD 3650 @ 512 MB . Vista Home Premium 64 Bit

Attachments

Login to view attachments
Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 20th Jan 2010 14:24 Edited at: 20th Jan 2010 14:33
My ideas:

- Enemies:
- Waves of meteors showers of different amounts and sizes, from small ones to 'planet killers'.

- Alien ships? If so, once again from the small drone ufo size/power to the big alien mothership that drops the drones and the rest of alien ships.

It would be nice to show were the next wave is coming from, as they could come from all directions.

The waves of meteors could be affected by the Earth's gravity, and therefore some could make a near parabolic path, and some others could do a direct impact on surface. Some could even enter some kind of orbit. Just let the math do its job.
See the pic below to better understand what I mean.

About the friendly units, they could vary :

- Small drone or 'sputnik' satellite type.
- Advanced satellite.
- Military Shuttle.
- Military spaceship.
- Space station.

That, is, from the smallest to the biggest as well.
Don't know yet the impact of the orbit distance, but shuttle and spaceships could have advantages on this aspect (be able to change orbit?), and more weapons to fit, etc.

Another thing I suggest is to change the camera point of view, just to show the Earth from different positions, but keeping the gameplay the same. Or perhaps it could be from a perspective advantage point, similar to the isometric projection, but keeping the 2d gameplay (I think this is 2d so far). Some samples at the pic below, I think they look nice, don't they?

Quote: "Quote: "You could choose to put up a satellite that orbits geosynchronously, to protect a particularly important spot on the planet's surface, or you could make it zip around the planet quickly, defending more area but less reliably."

What would be on the planet's surface to protect?"

Well, I'd say that the big cities would be a great idea... Tokio, New York, Paris... you know

Also keep an eye on the playability, to maintain the player motivation and addiction. The amount of points earned to buy upgrades and their availability, should be at the right moment. Not too soon to make it too easy, neither so late that would make it too hard.

Here the pic that completes some of the ideas above:



I think that's all so far, you please keep us informed about the progress

[Edit: Oh another idea: to be able to carry/drop satellites to the orbit of the Moon? That would make the Moon a strong defence tower ]

Attachments

Login to view attachments
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 26th Jan 2010 02:55 Edited at: 26th Jan 2010 03:30
Thanks for the input guys, I pretty much finished the core engine yesterday so the only thing that's left is a lot of media and scripting. I'll go through and add the various suggested features when I get around to that area of the game, but right now I'll just round it off into something that works, however I already have most of the fundamental components working in some form.

I've made a new video showing off the creeps that follow decaying orbits into the planet, their spawning is controlled by scripts, so each level can just be defined and modified quite easily. Right now the health is displayed over them to make debugging easier but I'll improve that eventually, there are currently 2 buildings there, one does nothing and the other allows you to spawn satellites as you can see below:



So now that the boring stuff is mostly out of the way you can expect to see more interesting videos soon! One small thing I need input on right now is how the game levels will work. I was thinking of making it so that I have a list of levels(each one being a unique script) and you select the level to play and you get a selection of planets to use for that level(maybe used as a difficulty setting?). For example, I pick a level called 'Armageddon' and I get to pick between Earth, Mars and The Moon, whereby The Moon has the least amount of slots(due to it being tiny) thus making it harder to defend and you must destroy the incoming asteroids/meteorites.

Positions -

The biggest change since the last version is how I handle positions in the engine, I now use a class called 'Position'(took ages to name) that is in theory linearly accurate over a set range, unlike the standard 3D float vector which degrades in accuracy as the values stray from 0.0. To draw these positions, at render time I pass the camera's 'Position' to the ObjectManager and it positions everything relative to the axis(0,0,0), this allows me to have scenes of practically any size without loss of accuracy. Of course doing this adds to the complexity of positioning objects because you can't just set the x/y/z on its own(as floats alone aren't accurate enough). So instead, when you set the position you also pass the metric magnitude of the position relative to the metre, which maps quite nicely like so:



The biggest issue with this system is that you can't get the distance between points so simply, if you have objects several AU from one another and try to return their distance as a metre then you may well end up with some issues with massive return values. So all my length values require you to pass the magnitude you wish to base the return value off of, I also have one that returns the log10 of the distance, thus solving this issue.


Quote: "How long do you think this game will take until you have it done?"


"I intend to finish the game code by the 24th, and then spend 1 week writing scripts, making media and finally pouring insane amounts of polish over it so I can release it on Feb 1st."


Quote: "1) Maybe the weapons should rotate with the earth (looks a bit odd atm)"


Done.


Quote: "2) Have the actual player be in a ship above the earth, and they can move around it, dodging alien attacks, with maybe a few objects in the way which are destroyed when hit."


The actual player is Earth, you can currently move it using WASD but there's not much point to it so I'll probably remove that. In addition to spawning satellites, some buildings will fire bullets, so moving away from the Earth doesn't make a whole lot of sense.


Quote: "3) Some enemies drop weapons/shields when destroyed, which spiral in towards the earth depending on the enemies motion when destroyed. When the player picks them up they can be attached to one of the five modules on the earth. They would either shield or protect the earth at that point."


Good idea, but how would the player pick them up? I often see in games you must click coins and such to collect them but this seems highly pointless, perhaps you must use a gun to... actually(yes, changing directions mid-sentence is better than rewriting it). It may be a better idea to make it so to collect power-ups you have to either fly Earth into them or have a satellite hit one, that way moving earth has some utility, and if I add in power-downs(is that the right term?), you would have to dodge them as your satellites orbited, that could add some more strategy.


@Virtual Nomad

Some very nice ideas there, however I'm not too sure if I want to go down the upgrades route, as it takes a lot of time to design and balance them all. Plus, to make upgrades strategically meaningful, the game would have to last quite a long time, this may be good if I add in some unlimited waves mode, but I usually find such long TD games a bit boring, we'll see.


Quote: "i have a concern re: gameplay where, from what i see now, the obvious player tactic will be to concentrate fortification of the inner-most rings since they provide the most overall protection"


This is true for the basic satellites that just shoot stuff near them, but when I add in the more complex ones that vacuum enemies, in, it'd be better to have those farther out, and if they aren't near guns then they're useless. Also, as mentioned a few lines up, if I add power-downs that gets dropped from enemies, having lots of satellites near the planet means you won't be able to dodge any drops in time.

But ultimately we'll see, as it can easily be tweaked.


Quote: "Another thing I suggest is to change the camera point of view, just to show the Earth from different positions, but keeping the gameplay the same. Or perhaps it could be from a perspective advantage point, similar to the isometric projection, but keeping the 2d gameplay (I think this is 2d so far). Some samples at the pic below, I think they look nice, don't they?"


It looks nice, but it kind of blocks the view a bit, though I can easily add this in as an option.


Quote: "Oh another idea: to be able to carry/drop satellites to the orbit of the Moon? That would make the Moon a strong defence tower"


The 'moon' in my last video is just a small version of Earth so I can see if I'm actually moving or not. At present everything's based around your planet and changing that would require quite a bit of code change so I won't for now at least.

[edit]

Also, if anyone's interested, the line count break downs:



Supporting lib I wrote for this:


However my line counter doesn't detect block comments so you'll have to remove 16 lines from each file for the license, which brings actual totals of: 4648 + 8577 lines.

Hassan
13
Years of Service
User Offline
Joined: 4th May 2009
Location: <script> alert(1); </script>
Posted: 26th Jan 2010 08:28
ouch, an i thought my 7k lines were good

Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 27th Jan 2010 16:41 Edited at: 27th Jan 2010 16:44
I've seen the video and I suppose that the green zone is where the satellites can be dropped, right?

Well, it seems that the asteroids are damaged when hitting the satellite trail. I think that destroys them too easily. Perhaps those on the video could be some sort of expensive advanced satellites.
I would make the asteroids destroyable by the 'point' itself that is the satellite, if they crash into it, and the satellite could be destroyed as well with such impact (one or several asteroid hits).
I am expecting some other satellites to be able to shoot and therefore destroy more asteroids.

On the asteroid side, I suggest to make them with different sizes, health and speeds, but playing with speeds seems the most visually effective to me. Also I would group them in 'clusters', so eventually they can be lone asteroids, but they usually come in 'rains', with similar (but not equal) speeds, sizes and directions.
Advanced dangerous asteroids could be a planet killer surrounded by a bunch of small ones, forming a cluster as well.

Quote: "One small thing I need input on right now is how the game levels will work. I was thinking of making it so that I have a list of levels(each one being a unique script) and you select the level to play and you get a selection of planets to use for that level(maybe used as a difficulty setting?). For example, I pick a level called 'Armageddon' and I get to pick between Earth, Mars and The Moon, whereby The Moon has the least amount of slots(due to it being tiny) thus making it harder to defend and you must destroy the incoming asteroids/meteorites."


Well, I don't know if you should base the difficulty on the size of the body. Despite the Moon allows less 'slots', it also has less gravity, and so, many asteroids could follow their path, that can collide or not with the Moon itself.
Now if you want to add another level, you'll have to search for an even tinier body? Instead of that, think that Jupiter could be very difficult to defend, because it attracts asteroids with much greater gravity force, well just thinking out loud

I attach a simple scheme of 4 levels with options/settings for 4 different planets, 4 types of waves and 4 weapons, all with increasing difficulty. Of course no one should be able to defend Jupiter, unless previously unlocked
Not very imaginative on my side, but I hope it helps

Attachments

Login to view attachments
Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 27th Jan 2010 16:46
Attached excel version of the document above, for easy editing
Oh well, not a big deal

Attachments

Login to view attachments
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 1st Feb 2010 01:02 Edited at: 1st Feb 2010 03:48
I won't be able to meet the deadline of today on this because of a stupid luabind bug I should have noticed earlier, it turns out that the optional extensions you can include that allow you to pass arguments by non-const reference/pointer weren't tested in VC++ because including them causes a million template errors and I know nothing about luabind/boost's internals so I can't nor can I be bothered to fix this. There's one workaround I will try, and that is(shudders) to store a static ptr to the current instance of every class and have a method in each class to internally set the current instances before I call a function requiring them. This hack should work, but it's quite annoying to set up and rather breaks OOP paradigms left and right and makes the scripts really confusing to read.

Quote: "Well, it seems that the asteroids are damaged when hitting the satellite trail."


Nope, in that video they only collide with each other and the planet, the satellites are currently invincible.

[edit] I may actually have been wrong about passing references not working correctly, it seems my collision system was stupidly returning a copy of my collision data object which did a shallow-copy of my data, which was reference counted, thus some of my objects were being released twice when only acquired once, who would write such stupid code?

Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 1st Feb 2010 10:58
Quote: "Quote: "Well, it seems that the asteroids are damaged when hitting the satellite trail."

Nope, in that video they only collide with each other and the planet, the satellites are currently invincible."

Sorry but I think I do not completely understand, What is causing the asteroids to lose their life points at the video?
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 1st Feb 2010 14:33
Magic, the satellites currently acquire the nearest target within 100m and drain its health, because at the time I didn't implement bullets.

Anyway, I now have the game working again and no longer have the stack continually filled with lua crap leading to an error I can't easily track down. I'll wrap up the game so it at least works(with -1 polish) and release it, this shouldn't take more than a day or so, but I'd rather not post deadlines anymore! In hindsight, writing the game with lua in mind from day-one would have saved me an amazing amount of time, don't make this mistake too!

Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 1st Feb 2010 15:40 Edited at: 1st Feb 2010 15:41
Quote: "the satellites currently acquire the nearest target within 100m and drain its health, because at the time I didn't implement bullets."

Ah I see. Well, an easy weapon could be a laser beam. Not laser bullets, but a continuous laser that tracks the asteroid.
That would fit into the health draining, only thing pending would be to draw the beam itself:

Attachments

Login to view attachments
NeX the Fairly Fast Ferret
17
Years of Service
User Offline
Joined: 10th Apr 2005
Location: The Fifth Plane of Oblivion
Posted: 3rd Feb 2010 00:51
Wow, the Earth itself looks gorgeous.

Athlon64 2.7gHz->OC 3.9gHz, 31C, MSi 9500GT->OC 1gHz core/2gHz memory, 48C, 4Gb DDR2 667, 500Gb Seagate + 80Gb Maxtor + 40Gb Maxtor = 620Gb, XP Home
Air cooled, total cost £160
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 6th Feb 2010 19:41
OK update time! You lot probably don't read what I say so video first:



I've now pretty much finished the game engine itself, i.e. you can go from the menu to the game, win/lose, and keep doing that. I improved the GUI a bit and now list all buildings, enemies, their health and yours. I implemented the cone of fire with nice graphics as per Virtual Nomad's images. I made it so the buildings only function if the cursor is within the view area, which is either a hoop or a cone, this makes it harder to aim the guns but it can be ignored for certain buildings.

The only major things left to do are to handle multiple scenarios along with their score tables, and to allow construction and upgrading of buildings.

I'm not really sure if any of these new things really need explanations, however, if I missed something or someone wants further insight into how I did anything in the engine thus far, feel free to ask.


Quote: "Ah I see. Well, an easy weapon could be a laser beam. Not laser bullets, but a continuous laser that tracks the asteroid.
That would fit into the health draining, only thing pending would be to draw the beam itself:"


Lasers!!!! Of course, neither of my current particle systems are adequate to handle laser beams so don't expect them for a bit.


Quote: "Wow, the Earth itself looks gorgeous."


Thanks, though I did make the atmosphere unrealistically thick as you can no doubt see, and the colours are kind of off.

Virtual Nomad
Moderator
16
Years of Service
Recently Online
Joined: 14th Dec 2005
Location: SF Bay Area, USA
Posted: 6th Feb 2010 21:55 Edited at: 6th Feb 2010 21:56
looking good, dc.

a suggestion: since the bullets continue beyond the radius of the cone, i think the cone should "go green" and allow us to fire whenever the mouse falls within cone's angle. right now it looks a little tedious to play (especially when zoomed out), trying to aim and keep the pointer within the scaled cone graphic. of course, you're doing the testing so you're the best judge on difficulty and "fun factors" right now.

also, seeing the cones "live", now, i think the cones/rings should fade with distance. in the vid, it seems very "2-d slapped over 3d", aesthetically. i know that opinion might change once starfield/background graphics are in place, tho

thanks for the update. keep up the good work!

Virtual Nomad @ California, USA
AMD Phenom™ X4 9750 Quad-Core @ 2.4 GHz . 8 GB PC2-6400 RAM
ATI Radeon HD 3650 @ 512 MB . Vista Home Premium 64 Bit
Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 8th Feb 2010 14:41 Edited at: 8th Feb 2010 15:08
Looks pretty advanced, and nice so far
It could be a good moment to let us try, so you can get more feedback before you finish it

Quote: "neither of my current particle systems are adequate to handle laser beams so don't expect them for a bit."

I think a simple 2d red line will make it Just to not to see the asteroids vanishing for no reason

Other than that, I suppose that all the weapons looking rather similar are just those little details that are covered from now on... Also, I've seen the asteroids slowing down their speed when arriving... Perhaps to let some of them to pass by and eventually go away, or to let them have a much different speed, would add more variation to the game

[Edit: Oh tracking missiles would be a great addition, as well as rockets, same as missiles but launched perpendicular to surface with speed 0 and a constant acceleration.]
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 8th Feb 2010 16:37
DEMO: HERE

It's pretty much the same as the version you can see in the previous video except I've half implemented upgrading buildings; if you click the building slots on the left after they've been selected, it'll pop up an additional button on the right which will replace the building with a 'Laser Cannon', or build one if the slot's open.

To switch active slots press 1-5 or click the icon at the top left, there's not much else to say, let me know what you think! Oh and, I know replacing the very top building with the Laser Cannon isn't such an amazing idea because the targeting goes along 0 on the Y axis, but that slot is above this plane thus any bullets from it fly through the ground, I can't think of many decent ways to improve this.

Quote: "I think a simple 2d red line will make it Just to not to see the asteroids vanishing for no reason"


Yep, through decent red lines will require some more particle classes, as currently I only have the point sprite(used for explosions and the laser bullets) and ribbon(satellite trails) ones, neither of which are suited for them.

Quote: "a suggestion: since the bullets continue beyond the radius of the cone, i think the cone should "go green" and allow us to fire whenever the mouse falls within cone's angle. right now it looks a little tedious to play (especially when zoomed out), trying to aim and keep the pointer within the scaled cone graphic. of course, you're doing the testing so you're the best judge on difficulty and "fun factors" right now."


Done, building slots can now ignore the far distance which causes the view cone visual to fade out as seen in the new demo.

Quote: "also, seeing the cones "live", now, i think the cones/rings should fade with distance. in the vid, it seems very "2-d slapped over 3d", aesthetically. i know that opinion might change once starfield/background graphics are in place, tho"


They're like that for the ring because that's the area in which you can place satellites, making it fade wouldn't make a whole lot of sense as I don't want to allow them to be placed anywhere.

Quote: "Also, I've seen the asteroids slowing down their speed when arriving..."


Yep, the playing field is a circle with a radius of 500m, however the camera can view like 750 or something when zoomed out so I spawn things at 1000m and slide them in, it's better than having them take absolutely ages to get into view, or to randomly appear!


Quote: "[Edit: Oh tracking missiles would be a great addition, as well as rockets, same as missiles but launched perpendicular to surface with speed 0 and a constant acceleration.] "


Yep, once the upgrading and stuff is done I'll be going mad with adding entities of every type.

Hassan
13
Years of Service
User Offline
Joined: 4th May 2009
Location: <script> alert(1); </script>
Posted: 8th Feb 2010 18:13
Nice, how about adding limitation to the orbits that you can spawn around the earth? you can win by just spawning alot of them

and, a suggestion: you can add drops from the creatures ( or rocks or whatever =p ) that you kill, like weapon upgrade, and some extra orbits ( if you will add limits ), and to catch something dropped you need to shoot it, so you can make the drops moves same way as other things but faster to be harder to catch

also, full-screen mode maybe? everything looks better in fullscreen

so yeah, it looks awesome =)

Kryogenik
13
Years of Service
User Offline
Joined: 22nd Sep 2009
Location: Heidelberg, Germany
Posted: 8th Feb 2010 21:46
Played it, its pretty fun. I spawned a million blobs and waited to win . The earth itself looks pretty good, especially as it is spinning. Anyway, nice job.

Codesurge is so awesome, thanks Hyrichter.
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 9th Feb 2010 07:55 Edited at: 9th Feb 2010 08:34
Quote: "Nice, how about adding limitation to the orbits that you can spawn around the earth? you can win by just spawning alot of them"


Of course! But first I need to design some type of money system or something, to limit how you can upgrade stuff and what not. I was thinking of making it so that the planet has some type of capacity for electrical systems, think of it as battery power, and that upgrading buildings or building satellites takes up a certain amount of this capacity. However, for satellites the power drain would be proportional to the distance from the planet, so very distant satellites will use up less power, but they'd also be of less use because they wouldn't be able to cover the planet that well. This power level could perhaps be raised by gathering powerups from enemies.

The alternative is to have ye-olde money system, kills = money, upgrades and making stuff consts money etc, but I think that's a bit boring?


Quote: "and, a suggestion: you can add drops from the creatures ( or rocks or whatever =p ) that you kill, like weapon upgrade, and some extra orbits ( if you will add limits ), and to catch something dropped you need to shoot it, so you can make the drops moves same way as other things but faster to be harder to catch"


Will do, eventually, the enemies are asteroids right now because I happened to have an asteroid model from my previous game and the 'AI' for it is amazingly simple, I'll add more fun stuff soon.

Quote: "also, full-screen mode maybe? everything looks better in fullscreen"


Yep, once I do more work on the menus, this demo was literally my current build compiled in release, as windowed is far easier to develop with.

Quote: "I spawned a million blobs and waited to win"


I'll make it hard next time!(if you catch my drift)

[edit] Also, lua is awesome:



Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 9th Feb 2010 12:19 Edited at: 9th Feb 2010 12:31
Quote: "To switch active slots press 1-5 or click the icon at the top left"


I have had problems choosing which tower to use. Clicking the icons or the 1-5 numbers doesn't matter, the Earth spins so fast that the tower that turns on is probably different than the one that I wanted.

I suggest to be able to directly click over the tower/slot to choose it.
In the worst case, at least draw number over the slots, so you can tell which is which.

And perhaps the Earth spins slightly too fast, wasn't it once every 24 hours? Just kidding

Quote: "I was thinking of making it so that the planet has some type of capacity for electrical systems, think of it as battery power, and that upgrading buildings or building satellites takes up a certain amount of this capacity. However, for satellites the power drain would be proportional to the distance from the planet, so very distant satellites will use up less power, but they'd also be of less use because they wouldn't be able to cover the planet that well. This power level could perhaps be raised by gathering powerups from enemies.

The alternative is to have ye-olde money system, kills = money, upgrades and making stuff consts money etc, but I think that's a bit boring?"


Well, just make sure that the users easily understand. "ye-olde money system" is something that everyone gets.
If you go for the planet energy, that's original. Just make sure that the concept doesn't get as complex as you described. All the user needs is a 'energy bar' that gets lower as you spawn satellites, limiting the weapon itself. Keep it simple and playable, and save some coding time

[Edit (yeah I edit too much): The spinning rate of the planet could be part of the difficulty system, as it seems that the faster it spins, the harder it is to hit an asteroid, although you cover 360º faster. Just thinking out loud, but it would be nice that the different planets have different spinning speeds (Jupiter spins over itself each 4.5 hours or so )]
darkvee
17
Years of Service
User Offline
Joined: 18th Nov 2005
Location:
Posted: 10th Feb 2010 01:08
Hi darkcoder
The menu's ain't fully developed, but i'm sure they will be when its finished.
The game play is kind of fun once you get the hang of it.

I noticed I respawned so many blobs you don't have a limit for them, and if you respawn to many blobs then the blobs have no trail behind them.
I know you will fix this though it's only a beta.
Everything else I think is falling into place though good job.

darkvee
dark coder
20
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 19th Feb 2010 16:55
OK I've improved the engine quite a bit, the callback system is now far more flexible and I tidied up the interaction between C++/lua to make it more awesome.



I also improved the GUI as you may notice, the sprites are mainly from HERE and none of the Cannon upgrades do anything, yet.


Quote: "I have had problems choosing which tower to use. Clicking the icons or the 1-5 numbers doesn't matter, the Earth spins so fast that the tower that turns on is probably different than the one that I wanted.

I suggest to be able to directly click over the tower/slot to choose it.
In the worst case, at least draw number over the slots, so you can tell which is which."


Good idea, I could also make it automatically pick the most powerful weapon within range if you try to click outside of the view cone.


Quote: "And perhaps the Earth spins slightly too fast, wasn't it once every 24 hours? Just kidding"


Maybe, but if I implement proper turret selection as mentioned above the spin speed shouldn't matter too much.


Quote: "Just make sure that the concept doesn't get as complex as you described. All the user needs is a 'energy bar' that gets lower as you spawn satellites, limiting the weapon itself."


Yep, in the video you can see the energy going down when I spawn the satellites, the total energy would go up when you pick items up.

Quote: "The spinning rate of the planet could be part of the difficulty system, as it seems that the faster it spins, the harder it is to hit an asteroid, although you cover 360º faster."


This was one of my original ideas to implement as well .


Quote: "I noticed I respawned so many blobs you don't have a limit for them, and if you respawn to many blobs then the blobs have no trail behind them."


I've made it so they now cost something to make, I'll eventually improve that some more by giving the blob(now called a Factory) a cool-down period so you can't spam them. Also, the ribbon trails have a limit of 1000 points, so spawning lots will break the trails eventually, all in the name of optimization .

Hassan
13
Years of Service
User Offline
Joined: 4th May 2009
Location: <script> alert(1); </script>
Posted: 19th Feb 2010 19:00
oh, the over-powered orbitals are even more over-powered because of the new over-powered laser thing O_o, by the way, the effect for the laser looks cool =)

so, from what i see in the vid, the UI is really complex, i didnt get anything hapened while switching weapons, maybe you made too much weapons, more than needed?



mike5424
13
Years of Service
User Offline
Joined: 30th Mar 2009
Location:
Posted: 19th Feb 2010 19:00
Woah, This looks awesome!

Off-Topic: Did you win a prize for your physX entry? (I know it was a year or 2 ago but still....)

---
TheComet
15
Years of Service
User Offline
Joined: 18th Oct 2007
Location: I`m under ur bridge eating ur goatz.
Posted: 20th Feb 2010 01:59
Looks cool, very innovative! I'll keep an eye on this one

TheComet

Morcilla
20
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 23rd Feb 2010 14:15
Quote: "if I implement proper turret selection as mentioned above the spin speed shouldn't matter too much."

Well, I think that the spin speed has something to say regarding playability, I would keep it not too slow... neither too fast

About the new GUI and sprites, well, they are improved, no doubt. But using those RPG icons could be out of place, don't you think so? Here are a few space icons, although they are not licensed for commercial use:
http://clip-art.kaboose.com/icons/icons-space.html

Overall, everything looks good to me

Dragon Knight
15
Years of Service
User Offline
Joined: 10th Jan 2007
Location: Newcastle
Posted: 3rd Mar 2010 08:36
I think that's a great idea, recording your progress, it really shows people how much effort you put into your work.

If you were to talk through whilst you showed your work i'm sure you'd get a few extra people hooked trying to listen into tips on how to make their own applications better.

,Nice work

Login to post a reply

Server time is: 2022-12-06 16:34:49
Your offset time is: 2022-12-06 16:34:49