New PC

by Joe Flood on 26 November 2015

So, I finally took the plunge and bought a new PC (not Mac!). 

I've worked with Visual Studio long enough now that I'm used to its "issues" - but actually, most of its issues were just slight differences in how it handled certain things, compared to Clang. And in fact, in some places where I previously said MSVC++ was wrong, it was actually doing what it was supposed to - in some cases where Clang was not!

So that's Windows sold. Windows 10 has been an interesting journey for me too - I grabbed an Insider version of the OS from fairly early on and saw it evolve over time. I actually now find Windows 10 more productive than Mac OS X. Go figure.

Okay, okay. So back to the PC. I figured since I'm now back on a PC, I can finally catch up on all the games I've been missing on my underpowered Mac. So I needed something juicy to run it on.

Meet Rapid Dave.

Rapid Dave

I built him from scratch, and he's pretty speedy. He'd have to be, with a name like that!

Here's some brief specs:
  • MSI Z97S SLI Krait Edition motherboard
  • Intel Core i7 4790k CPU 4000MHz @4.4GHz + Stock cooler
  • 2x 8GB DDR3 RAM @1866MHz
  • 1x 1TB SSD, 1x 2TB 7,200 RPM HDD
  • Corsair Graphite Series 230T Case with 1 main case fan & 2 smaller, LED lit front fans
  • nVidia GeForce GTX980 Ti Graphics Card

As you can see, it's pretty beefy but lacking in some areas (cooler?!). I'll be upgrading this further as I go - so watch this space!


by Joe Flood on 22 August 2015

25. Twenty-Five.

Damn, that's old. Really old. Like, a quarter of a century old!

I'm going to have to try really hard not to have a mid-mid-life crisis (quarter-life crisis?)! Kidding, I'm fine.

Thankfully, 25 is also my lucky number. So, with that in mind, let's make my 25th year* a good one. This year could well be the beginning of something big!

* Yup, I realise it's really my 26th year - bugger.

Another rant about MSVC++...

by Joe Flood on 09 February 2015

So today I came across a weird bug. On Mac, the game engine will happily draw stuff directly to the screen - i.e. for drawing HUDs, overlays, etc. For this test, I used a small red box, but anything would do really!

On Mac, red box appears. On Windows, not so much.

**scratches head**

All up-to-date on Git, check. Same code, check.

**scratches head**

Fast-forward 3 hours, and I've solved it. The reason you ask? Visual Studio's compiler gets it wrong.

The problem is simple. I have a piece of code which draws a VBO (basically, stored geometry, shapes) with a Colour. Here are a couple of methods that I can use to render a VBO object:



void Render(GLenum drawType = GL_TRIANGLES) const;
void Render(const mesh::Material &mat, GLenum drawType = GL_TRIANGLES) const;
void Render(const Colour &colour, GLenum drawType = GL_TRIANGLES) const;
void Render(Texture *tex, GLenum drawType = GL_TRIANGLES) const;

The one we're using is on line 3 - rendering with a given colour. The calling code is this:

Do you see it now? I didn't either! Looks like while the Xcode compiler (clang) is good enough to realise that my 0xFF0000 should be used to construct a Colour, MSVC decides that I'm talking about a Texture* (see line 4!). So rather than applying the red colour to the quad, it applies an invalid texture, which the engine apparently silently ignores (oops!) and draws a transparent box. Great.

Problem solved, though!

Great success!

by Joe Flood on 31 January 2015

So, I've been beavering away trying to get Equinox to work with Windows for the last 2 weeks or so, and I've moaned about how horrible Microsoft's compiler is.

I still think it's the worst compiler out there, not being able to do these things:
  • Use symbols (methods, classes, ...) from a library without having each one marked with __declspec(dllexport)... eugh!
  • Errors resulting from using debug runtime libraries vs release ones, which are not actually explained as such!
  • Having to explicitly tell it the template specialisations of a class at compile time (for a library), rather than allowing proper template instantiation
  • No constexpr!!!!!
  • Can't use static const vars inside a class (why not? Seriously MS, an error saying that the feature is "not implemented" is not good enough!)

But I do bring good news - it builds! And better than that, I can now convert an existing project for Windows in around 20 mins. New projects take about the same. If I now create a template project, I can cut those times right down to near enough zero! So that's the next task.

But, without further ado:

Atoms, running on Windows! Sound is also working, but you can't see that in the screenshot. Obviously.

Exciting times!!

Another change in direction...

by Joe Flood on 15 January 2015

So, I've taken a step to the side. A sidestep.

Work on the game engine itself (Equinox), and the games based on it, has effectively been paused, and put to one side.

Why? You thought I loved making games?

Well - I do! But I've realised I need to target my games to Mac AND Windows. And so, I'm now making the engine build and run with both the world's most commonly used OSes:

  • The Mac version will continue to use CMake, allowing me to build from Xcode, command line, or something like CLion.
  • The (shelved) Linux version should be workable very simply based from the Mac version.
  • The Windows version will build through Visual Studio only, using binary versions of the libraries. 

So, the next few weeks will be spent building a toolchain to use on Windows to build and run games! 

Just need to work around some of MSVC's shortcomings - lack of constexpr, no list initialiser syntax in member vars, and very, very strange variable rules - I can't implicitly convert ints to floats in some situations, because it's narrowing (?! - no it's not!) 

Next Page

©2012-2015 Javawag. All rights reserved.