Finally the year of Linux on the desktop! (and Lake Quadrobegon)

Well, I’ve hit one of my slumps (if my lack of posts wasn’t obvious).  Some of that is due to my work schedule (mornings, ugh!), some of that is due to dealing with failing cat health (and eventual death ;_;), and some of that is me, recently, using my mental energy/hobby energy towards trying out Linux (again).

So first, I settled on openSUSE.  I tried Linux Mint, and just found it feeling totally 2003.  This is 2015, UI has moved on from WinXP.  No offense, guys.  But that wasn’t he main thing.  It just felt… slow.  I can’t recall what the straw was that broke the camel’s back, but after reading up on things I decided to jump to openSUSE.  I used to love Ubuntu, and probably still would, but I kinda want to explore other options.

The Unity interface intrigues me, but after narrowing things down to something seemingly stable (there are pretty options out there, but they’re either too young or, in the case of Elementary OS, a bit too… anti-Free, and also – looking a little too  much like an OSX Wannabe).

So of the remaining distros, I narrowed down to Zorin and openSUSE.  openSUSE I wanted to try for the KDE setup, but unfortunately it just seemed a bit hoggish, and worse, I had some video glitches (I’m trying on Tumbleweed, not Leap, not sure if it would matter).  After many false starts, restarts, even making my BIOS unbootable (had to take the battery out to reset it).  I finally got it working mostly well.

I’ve been using Win10 and overall LOVE Win10 in terms of speed and stability.  It doesn’t feel janky.  I still feel like Linux is often Janky, and some of that is due to the core design philosophy I think.  The new Gnome UI is certainly interesting, but had to tweak it (I like my tabs on top, thank you!).  While FF is the more free option and I prefer it in Windows, it seems that Chrome is better in Linux… The font rendering in FF on Linux is horrid, and I had to play with it to get the tabs on top like I like, and ultimately, trying to get Netflix to play nice with it ended up having me install Chrome for Netflix.  I may switch entirely in Linux for the font rendering and netflix abilities, which makes me sad, because I prefer the philosophy of FF.

After many fits and starts (and some of the problem being being down), I finally got my music server up and running.  My next goal is to install Unity (the game dev tool, not the Ubuntu desktop).

So speaking of, and game design, etc…

Been debating the best way forward with hexbon.  It would require a large rewrite and while I love hexagons, I’m not sure this is the best spot for it. The “bee”/”B” pun is nice, but I’ve been thinking it might be simpler to take the same mechanic and put it into squares.  Basically it’d be a cross between the visual design of my Quadrophobia game and the gameplay mechanics of Hexbgon (only with squares instead of hexagons).  I’ll jokingly call it Project: Lake Quadrobegon

I think this would be more visually appealing (and some of the assets are already made), as well as perhaps easier to program.  Now that I have some of the base code and concepts, I’m going to work from the ground up on what I need to do plan wise for features (bonuses, which I didn’t consider in the first iteration (undo move stack, move to wild position – as well as altering how I score since it won’t have honey as a currency to purchase powerups).  Perhaps a rainbow colored disc could be used to “cover” a number, and you could take the disk as an undo token, or use it as a wild.  If you take as an undo token, the real move number would be revealed underneath.  There would be no penalty for undoing moves, but it would be finite, based on number of tokens you have (which would save up between levels).

I was pondering using a different game dev system just, something “easier” with less coding, then I realized, it’s not that I’m dumb and need something “easier”.  It would just mean I’d have to learn a whole new way of doing things again, based upon whatever platform I went with, and all the knowledge I’ve learned/used of Unity would be wasted.  Nah, better to forge ahead with a system I mostly know and can get up rapidly (especially since I can reuse a lot of the code/layouts, etc…)  Too many people jump on the latest hippest trend just because they can and “SHINY”.  Better, I figure, to learn one tool and at least moderately well than only a slight understanding of  a lot.  I mean, there is definitely a good thing with jack-of-all-tradism.  It’s important, especially as an indie, to have that ability.  But sometimes it interferes with getting shit done.

Empty Errors…

So I finally tried, the other day, to revamp the code.  I reverted to a previous version of the code, then was having compile problems.  So I updated to the latest version of Unity which still caused problems.  In fact, now my error messages were blank!

So I tried to figure out what was going on.  No luck for like a week.  Then I fired it up again for shits and giggles to see if I could figure it out and my AV popped up – it was blocking Mono.  AHA!  I whitelisted and BAM!  It worked.

Kind of annoying, since I don’t recall receiving any message previously when it was happening.

My original goal was to revert to the previous version and then rewrite the core.

Alas, apparently my last pushed code (before branching code with powerups) was in May (WTF?).  It seems that some features are missing in that code, which sucks.  So the question then is how far back am I going with this?  Do I want to go back so far to reimplement a core or do I just use the latest and greatest and scrap a bunch of work and then rebuild it?  Either way I’m at a point where I wasn’t expecting to start the refactor, and it’s like the bears in goldilocks – too early or too late compared to where I was expecting the code to be statuswise.


Hexbgon: Branching Out

So – I decided to scrap the code I started (well not scrap, but branch).  Revert to the mainline of the code (my first time doing a git branch – super easy in sourcetree :)).  When I looked at the code I was trying to get working I just got flustered/annoyed at the mess it had become, and after looking at my code in the main branch of the repo which was much cleaner, I decided to revert (after some prodding from a friend).  I branched it so I have some record of the old code (the undo stuff worked, so I know I can integrate that).  My goal now is to refactor a bunch of it before adding features.  It’s clean enough that refactoring should be a little easier at this point than if I were to add more.

My main concern is editing the levels via changing the text properties in the level editor and having that reflected in the code.  Previously I had a text element in the GUI and that would pull up the value of the hexagon object when the game was run.  To help me understand, I would also set the text element in the editor so I could see what the game looked like before playing it.  However, that’s wasteful.  Typing a value 2x is dumb.  I wanted to have it pull it in automatically in the editor without having to run the scene, but that’s a whole other level of programming that I don’t care to learn.  What I think I’m going to do is the reverse of my original.  Set the gui Text value, and then when loading the game, load the hexagons value from there.  Or… Just scrap the “hexagon value” and use only the text value of the gui.  I don’t like that as much, because it means I’d have to get the child component (gui text) that’s attached to the hexagon and then get the value from that instead of from the hex itself, it’s one more level of indirection.

Frankly all of it is dumb and I should be able to just point the value of the guitext to the value of the hexagon in the editor and have it reflect any changes.  But I think it’s how Unity loads resources.

The next thing is figuring out how scan the hexagons for movement.  I think I’ll have to refactor how I implement the hexagon locations and where the bee location is in z-space.  I’ll have to look at that some more.  It’s ridiculous that I should have to do that.  The main issue is how I scan to see if something is available as a spot to move.  That’s what I really need to deal with – rethink my approach on that, make it more generic.