Jump to content

  • Log In with Google      Sign In   
  • Create Account

Avengers UTD Chronicles

The Odyssey, a turn-based sci-fi tactical game

Posted by , in The Odyssey 27 July 2014 - - - - - - · 1,314 views
indie, sci-fi, turn-based
Posted Image
Campaign map
In short
The Odyssey is a turn-based sci-fi tactical game where you play the role of a Fleet Commander in a space conflict. Why turn-based? I felt that there was an over-abundance of real-time games set in space. Turn-based games give you more time to think and can be very addictive, if done well, as X-Com or the Civilization series have shown. Plus, it opens the possibility of asynchronous multiplayer games.

The story
It is 2282 C.E.: Humanity has colonised the nearby planets of the Solar System and established outposts and research stations in the Trans-Neptunian reaches of space. However, more than 15 billion people now live on Terra and tensions between the Old World and the New Worlds are high. An almost depleted Earth is highly dependent on her colonies, although it remains the sole authority in the Solar System.

The Eye of Titan, a space telescope in orbit around Titan, has identified various planets in the habitable zone around nearby yellow main sequence stars: Tau Ceti, Sigma Draconis and Eta Cassiopeia. Three ships using an experimental Anti-Matter drive have been built. Theory and laboratory studies confirm that it will be able to provide enough power to warp the space between the Solar System and the destination. In practice, it has never been tested before. The UTS Winter Solstice, the UTS Dream of Mankind and the UTS Odyssey are en route towards the far reaches of the Oort Cloud where the Anti-Matter drive will be activated. Each ship will escort a small flotilla of ships carrying colonists in cryogenic stasis, deployable factories and biological arks. The voyage is one-way only. You are the commander of the UTS Odyssey and all of mankind’s hopes are with you. Especially after NASA's Chiron program, a generation ship travelling at 0.1 times the speed of light, failed to contact Terra after its 50 years voyage to Alpha Centauri.

The setting
The game is set at the very beginning of interstellar exploration. No alien civilizations have been contacted yet, if any do exists after all. Humanity’s only enemy is itself. The Odyssey, your ship, is a space carrier. Close to Pluto, it will rendezvous the UTS Voyager, a colony ship; the UTS Gagarin, a transport ship with the resources to build infrastructure upon landing and the UTS Darwin, a biological vessel containing seeds, embryos, livestock and everything else needed to jumpstart life. Its route is set towards Sigma Draconis. It is expected that the warp field generated by the Odyssey’s drive will envelope the other ships as well.

Posted Image
Preliminary render of the battle grid
The Game
Somewhere along the way towards Sigma Draconis, conflict will erupt. One of the key points of the game is that you as commander will not have total control over every single ship in the fleet. Alongside the traditional “Action Points” of turn based games, The Odyssey will build on the concept of “Command Points”. Your character will only be able to influence or advise a limited number of ships in your fleet per turn. The ships you do not choose to advise will act as their own ship captain will decide. Each ship captain will have RPG-like characteristics that will influence its decisions. Bravery, morale, discipline, etc. Each ship will belong to a particular “class” which will define the type of operations it is able to conduct. The Odyssey is a space carrier. It hosts several vessels capable of orbital insertion and interplanetary sublight travel. It is armed but it is something that has been kept hidden to the public. All other ships in the solar system are armed with high precision lasers against space debris, at best. Over the course of the game you will have access to ships capable of boarding and long-range strikes. The general idea is that capital ships do not enjoy the same manoeuvrability of single-pilot vessels. Once in motion, a capital ship will take several turns to “brake”. The game will feature a story-driven campaign, possibly more.

The first screen at the beginning of this post is a preliminary draft of the Campaign Screen. Your fleet will move in-system towards the orbit of Pluto where you will attempt to warp towards Sigma Draconis. In this part of the game, you will control your fleet in a similar way to Mass Effect's own system-level screen. Exploration will be a big part of the game as you will need resources to keep your fleet operational. When all hands will need to man their battlestations, the actual battle will be played on a hexagonal grid.

When will be able to play it? Can I help?
At this point in development it is very early to tell. However I, the developer, have already built a sizeable portion of the game engine. I am at point where the next technical steps to implement will depend on the direction the gameplay will take.
You can help in several ways. First and foremost by following the development of the game. Motivation from the community will be a deciding factor in the success of the game. If you like the idea, if you feel that a turn-based space-themed game is something that you would like to play someday, I would be glad to hear your feedback. More details on the gameplay will emerge as I flesh them out.
Furthermore, if you have art that you would like to contribute such as 2D or 3D art, sounds, music, etc. I would really appreciate it, as it is not one of my main skills. Stay tuned for more updates about the voyage of The Odyssey!

An old-school vector graphics / neon mesh appearance effect

Posted by , in Effects 19 July 2014 - - - - - - · 1,018 views
Effects, Vector graphics, Neon
I mentioned I am developing a turn-based space fleet combat kind of game. Think about Battlestar Galactica meets X-Com. I am explicitly referring to Battlestar Galactica and in particular to the Dradis. I always wanted a game where you are the fleet commander or admiral and your only way to relate to the battlefield is not through some ethereal camera floating in space but through some abstract graphical representation.

To recreate that look & feel my inspiration comes from the combat briefings of various sci-fi games and films. Does anyone remember Wing Commander's briefings? That's how I would like the game to be.

It seems in the future, GPUs will suffer a rapid decline. See for yourself:

Posted Image

Star Wars

Posted Image

Star Trek

Posted Image

The Dradis in BattleStar Galactica

So who am I to argue with all these warning signs? Admittedly, BSG is excused as the low-tech approach in the show was somewhat of a forced choice. Anyway, I am in the process of creating a short teaser video for the game I am working on. I needed an appearance effect and I thought that showing the mesh face by face would be a nice example. These future GPUs need time to load meshes anyway! Posted Image
I received some excellent advice in the forums. As a first attempt I implemented an algorithm that randomizes the order of the indices associated to the mesh. The ratio of primitives displayed is then animated from 0 to 1 over the course of 4 seconds. In order to avoid displaying the triangle edges, I am using an adaptation of a solid wireframe shader. Indices are then reshuffled in groups of six (two triangles, one quad). Clearly this approach works when you know that indices are generated in that fashion. It works well with solid primitives. It might be problematic if the triangles that form the base "polygon" are not consecutive. For example, in the below video I am reshuffling indices quad by quad. If the algorithm acted on triangles, then "L" shaped lines would appear (because one of their edges is hidden by the shader).

There's also a bloom post-processing effect applied (which seems to produce "blocky" results, I'll have to tweak it). Also there's a scanline effect because no retro-style graphics would be complete without scanlines. So yeah, the impending GPU decline will also inevitably affect monitor manufacturers. Such is the way of the future Posted Image

MVVM in SharpDX? Why not!

Posted by , in Odyssey UI 06 July 2014 - - - - - - · 991 views
SharpDX, UI, GUI
I just started this journal in the hopes that by participating more in the community I'll be able to find the necessary motivations to work on my project. Long story short, a long time ago I started working on a 4X game and the accompanying engine. Unfortunately the scope of the project was too big for my one-man army, so I refocused on a smaller sci-fi turn-based tactical game. I'll talk more about that once I have something to show.

I am also one of those fools who stubbornly refuses to use a 3rd party engine. The good thing about creating your own engine is that you learn a lot, but it is very easy to get distracted by unnecessary things. Such as implementing a DataBinding system in your GUI library.

I am not aware of any major GUI library that provides a DataBinding paradigm similar to XAML's. So, well it was absolutely necessary to implement my own. If anyone is aware of one, please do let me know. It would be interesting to see how more mature implementations were done.

I took my inspiration from Microsoft's "real" implementation of the Binding class. However as a quick look at the disassembled code will tell you, it is really massive and full of unnecessary stuff that will be marginally useful in a game context. A barebone system should be able to at least provide one-way binding of MVVM data to GUI object properties. Most game UI usually just display data without needing the user to change it. After all, a game is not a data-entry application. Therefore, one-way binding will be my main priority as I go along, with two-way bindings to come at a later stage.

First of all we have a DataTemplate class, similar to XAML's. For those not familiar with XAML, in this case the UIElement VisualTree property is a tree of controls that specifies the template of controls to create for each children of the container control this template is applied to.
public class DataTemplate
	public Dictionary<string, Binding> Bindings {...}
	public Type DataType { get; set; }
	public string Key { get; set; }
	public UIElement VisualTree { get; set; }
However since I guess that WPF determines the bindings while parsing XAML code, I had to manually define bindings through the Bindings property. See the following DataTemplate example:
DataTemplate commandTemplate = new DataTemplate()
	DataType = typeof (StackPanel),
	Key = "CommandTemplate",
	VisualTree = new Button() {Width = 64, Height = 64, Margin = new Thickness(4), Name = "Button"}, 
		Content = new Label(){ Name = "Label", TextDescriptionClass = "Small" }},
	Bindings = new Dictionary<string, Binding>
		{"Text", new Binding("CommandName", "Label")},
This DataTemplate indicates that for each child item in the container a Button control has to be created, whose Content control is a Label. The Binding tells the system that the CommandName property of the ViewModel has to be bound to the Text property of an element called "Label" . Here is the sample ViewModel:
stackPanel.DataTemplate = commandTemplate;
stackPanel.ItemsSource = new SampleVM[]
	new SampleVM() { CommandName = "AA" },
	new SampleVM() { CommandName = "BB" },
And here is the result:

Posted Image

It's very crude, but the basic principle seems to be working. And yes, that's a StackPanel with a Horizontal orientation. Controls are laid out automatically. I'm sure that a lot more problems will surface down the road but I am confident that in the long run, a simple MVVM system will save me lots of time. If you have suggestions for any improvement or simply want to know more, let me know!

You can check out the source code in my GitHub repository. Look in the OdysseyUI.sln.


July 2014 »