Monday, 31 January 2011

Finished! Discretion is out now on the Android Market

It's been a busy few weeks, but I'm very happy to blog that Discretion is now out in demo and paid versions on the Android Market :)

I made a short gameplay video that sums up how everything came out pretty well. Here it is:




So, how do I feel? Pretty happy with getting it finished almost on time. I originally hoped to have it out at the start of January, so scraping in on the 31st wasn't too bad considering I took a good couple of weeks of holiday since I started work back in October.

I'm pretty tired now but I'm quite excited about doing a full post-mortem with all the blood, guts and glory that made up the experience of developing my very own role-playing game. I'll probably do this over a few blog articles, covering things like:

* Finding and managing someone to make assets
* Dev in pictures: screenshots of various parts of development including my attempt at making 3D stuff
* Pitfalls, trials and tribulations - what I would and wouldn't do again
* PR and marketing (still working on this bit but I will report back as it seems a very common subject)

That's it for now. Time to send out some more emails...

Sunday, 26 December 2010

Happy Noel!

Happy Noel from the Discretion team!

Noellephant says hello.

Thursday, 16 December 2010

Libgdx efforts, and Chapter 1 almost feature complete!

Yesterday I did lots of tidying up of my codebase, bringing the bits I wanted to add to libgdx up to that project's standard. The end of the day saw me commit a lot of stuff - read the libgdx blog for what I got up to.

Today saw a lot more tidying up and polishing, with Chapter 1 looking almost feature complete, and a decent start to loading and saving. I'm very happy with my progress this week, and am looking forward to recruiting some beta testers in the near future.

Here's another screenshot! Look out for an introduction to the main characters soon...







Wednesday, 8 December 2010

Discretion's first pre-alpha screenshot

So, despite a crazy week which included getting stranded in the UK due to the bad weather, Google breaking ADT (rendering me unable to do any coding) with the latest Android release, internet outages due to our ISP and other setbacks, I've actually made some progress on the game! Enough that I'm willing to release this very pre-alpha, very basic screenshot of the main character and one of the party characters wandering around Atnar Castle. More will follow in the coming weeks.


Tuesday, 7 December 2010

Modelling with DeleD

Some thoughts on a workflow within DeleD, the world editor I'm using to build my levels with for Discretion.

1. Build world
2. Triangulate world (divide non-triangular meshes into triangles)
3. Apply materials and fix U/V mapping where necessary
4. Export

It's important to do as much modelling as possible in 1. before proceeding to the next steps, because the easiest way to ensure everything is triangulated once and only once is to select all objects then do triangulate. It's necessary to do 2. before 3. because U/V mapping a non-triangular polygon doesn't always work too well.

The Wavefront .obj exporter for DeleD has an extremely useful 'scale' option which allows you to model at the scale DeleD was designed to be used at instead of at real world (game) scale (mine is 1 unit = 1 meter which in DeleD is way too zoomed in). The triangulator in the exporter is broken however, so make sure you triangulate using the geometry toolbox instead.

Hope this helps someone!

Monday, 29 November 2010

Getting FloatBuffer data: BufferUnderFlowException

When getting FloatBuffer data from a mesh, you must be sure to rewind your buffer before copying it if you already have before. I was iterating subsets of vertex data for the same mesh (I have "submeshes", which are equivalent to Wavefront .obj groups or objects) and trying to get the vertex data for each submesh for some processing, but the second iteration I was getting a BufferUnderFlowException.

It took me longer than it probably should have to realise I needed to "rewind" the buffer so I could copy the data again. To do this simply call FloatBuffer.position() with zero to set its internal position back to the start.

Of course if you need to be performant, you probably shouldn't be copying it twice anyway... :)