I've managed to fix the display issues, and fleshed out some more of the scripting system. Spawning and updating of particles are mostly done. Drawing of particles are done, however there's no shaders yet. I will add shader support later on.
I'm a bit unsure how scripting system will work in multiplayer, due to randomization. I don't want the players to go out of sync (a player sees his enemy's ship dead, but the other player see it still alive for example). So I will have to figure that out later when I get to multiplayer. Note that network multiplayer is planned for after the game is released, so I'm not worrying about it too much now, but just something to think about for now.
While working on the script system, I realized that it's hard to manage two different coordinate systems in scripts. One is grid based which is for the ships and their positions, and another is free-form which is for particles. After some thinking, I decided to convert the ship to use free-form system. This means that ships are not locked to a grid cell, they're free to move anywhere. This simplifies a lot of things in the script system, but will be somewhat different in terms of gameplay. No longer do you move ships on a checker board. I think this will make things more interesting, as it opens up possibilities for me.
I can now add in a good kamikaze system without worrying about how to handle it in a grid-based system. I can just simply do mass vs mass collision and calculate the ramming ship's thrust, and have the ships bounce off of each other and apply damage to both ships (or more if ramming a big ship into a bunch of smaller ships). I can add free moving asteroids that you need to avoid or they'll ram into your ships. There's a lot of other potential (blowing up a planet would generate a lot of debris that you need to avoid for example) with this system, I'm excited about this.
With the spawning, drawing, and updating done as much as possible, the next thing on list is collision detection/handling. I've made the laser go pew pew, now it's time to make the ship go boom boom.
Now for screenshots! Since light don't have a limited range, I've made the laser to have an extremely long range. This will be similar to X-Com, you can either miss or hit, and you can see it visually hitting or missing, instead of some behind-the-scene number crunching. You can see the laser "missing" (quotes because collisions aren't done yet) here (first is zoomed in image, second is zoomed out to show the laser's range, which extends even more than that)
This is awesome news.
ReplyDeleteThought I had today.
ReplyDeleteThe freedom from the grid system makes not just ramming but much hilarity with applied force possible.
Hell may as well throw in orbital mechanics to the battle system while you're at it.
But i can picture it now:
Tractor beam passing asteroids onto a collision course with the enemy armada!
Cause disarray with the sheer might of your mass driver cannons as they send enemy ships careening back with their power!
Use the gravity wave cannon to knock their starbase down to the planet below!
While those are possible if it was real-time, those won't work in this because the combat is still turn-based :) So no newtonian physics, just simple "move to here" movement like in MoO 1/2 while asteroids will maintain a constant velocity that are updated each turn.
ReplyDeleteSorry to disappoint, but orbital and gravity would make things too complicated for no additional fun.
Shame but understandable. I had the same problem when I had a turn based space combat thing I was making. The question of when to apply newtonian motion each turn basically led to me scrapping it for regular "go here" arcade movement...then i made the game realtime and put the newtons in.
ReplyDeleteSo I can see why you'd want to avoid the decision.
Though seen as you have time units you could just have the movement update the ship's position whenever you spend TUs by velocity/100*time units spent and then do the remainder of the movement when the ship ends its turn. Although if you simply want to avoid the lunacy that is piloting newtonian craft I more than understand.
You kept mentioning your game, but I can't find a reference to it. Do you have a website? Or did you already gave me the link? Either way, I can't find anything. Maybe you could edit your profile and add your website to it so other people can easily see what you're working on.
ReplyDeleteNewtonian motion in turn-based system would be so confusing, I can't think of a good way of doing it. So no, I'm fixing the problem simply by not having newtonian motion (Sorry Newton, no offense! :) )
Well, I'm averse to directly referencing it cause of the nature of the game. But seen as you asked. I don't have a website but i do have a forum thread on it and an opensource repository that should be up to date.
ReplyDeleteWarning, game is NSFW, niche and weird. That being said feel free to take a look:
thread.
http://aryion.com/forum/viewtopic.php?f=79&t=28012
google code repository.
http://code.google.com/p/space-odyssey-aryion/