Category: Uncategorized

A Link to the Tileset & Sprite Trivia

In my off time I’ve been closely examining the Legend of Zelda Link to the Past tilesets and sprites, and I’ve been learning a huge amount about how that game is assembled visually. it’s amazing how much they managed to do with the limited resources of the SNES.

For a game I’ve played religiously as a child, it’s interesting to see the imperfections which I completely glossed over even after several complete playthoroughs. There’s also some neat workarounds Nintendo did while preparing their graphics.

So here’s some “trivia” I found while closely examining the various maps and shots of the game;

  • Bricks lining the floors of diagonal walls are always rounded. This is not decorative, but a limit of their sprite-sheets 8×8 tile resolution. There are 5 unique 8×8 tiles used to create a diagonal wall, it would have required 6 tiles to add the 3 pixels needed to straighten the edge, and another 16×16 composite tile. Same, apparently, with the bottom of diagonal cliff edges. If they fixed this, several tight diagonal corridors would have been impossible.
  • In the overworld you will never find a flower that is NOT above a sprig of grass. You will always find flowers tiled with grass, or above and to the left of two sprigs. If you see three flowers, it’s just a combination of the other two patterns.
  • Live grass and dead grass never touch. I’m guessing because dead grass is a palette swap, so they would have had to include a tile-set for those edges. Instead, there’s always a dirt buffer or a cliff.
  • Bobbing flowers in the overworld have more frames of animation than any single enemy walk cycle. As a matter of fact, some enemies only appear to have one frame in their walk cycles – it’s just flipped to create the illusion of movement.
  • The animation used for guards falling off an edge contains more frames of animation than several enemies have for all their animations, total.
  • There is one tree in the game with a root placed on dirt/cliff edge. The tiles that make up that root are recoloured grass; because of that, one of the colours is slightly mismatched.
  • Cliffs are by far the most complex tiles in the game, but also tend to show the most seams between tiles. To say it must have been painstaking I think would be an understatement.
  • Most dungeons and houses share the same brick walls, only palette swapped with different tops. Instead, dungeons distinguish themselves with unique entrances, pillars, and decorations. There’s also a unique entrance for the monastery which was unused, possibly to avoid it being confused with dungeons.
  • Walls in houses and dungeons also don’t obey perspective, various tricks are used to maintain the illusion. The southmost walls are sometimes outright covered, and very seldomly will you see half-walls or “tall” objects touching the south walls.
  • Braziers, tall lampposts, half-walls, and various other doodads to not contain transparency keys. While not surprising on its own, it’s shocking to realise how many things don’t actually have “shapes” or “blend in” to their environments when closely examined, simply having grey backgrounds which most people must never notice. Those moving spike traps? Those are square, you just thought they were pointy.

Anyway, those were some fun facts.

Zelda: A Link to the Past is simply an amazing piece of work, and the tilesets are remarkably compressed for what they were able to create; PNG images containing the complete light world are larger than the entire game itself, not including the alternate dark world, insides of houses, or dungeons.

Tomorrow is a New Day – Joining Blue Systems

I’m very excited to let everyone know that as of tomorrow I’ll officially be joining Blue Systems, working full time on KDE and related projects! The chance to really immerse oneself completely into something you love and also work alongside people you absolutely respect is mind-blowing.

I would like to deeply thank Blue Systems for this opportunity, I hope my contributions will match the awesome generosity that everyone in the community has given allowing me do this. Thank you!

Queueing up for Plasma 5.8

It’s been too long since I’ve posted on Planet… I missed you! But despite my slothish activity there are rituals to be followed, and so comes a wallpaper for Plasma 5.8;

Probably the first thing I’ll mention is that the Plasma 5.8 wallpaper will be shipping with a 4K UHD version. The last wallpaper was meant to have a 4K version, but it simply didn’t happen. Seemingly everyone is beginning to enjoy screens with high pixel densities, so it’s about time we shipped wallpapers to match, and it’s a fun bullet-point for an LTS release.

Here it is;

2560x1600.png
We still have a short window for tweaks and adjustments, so if there’s feedback for minor changes I can try to fit them in. I know a couple minor tweaks I’d like to make as well.

The general theme of the wallpaper is to try bringing back the vibrancy of earlier wallpapers; there’s been a trend making things progressively darker, and it had been mentioned that several people missed the energy of older wallpapers. With that in mind, hopefully this iteration has that light and energetic vibe without looking like a hot mess.

On a more personal note, some weeks ago the company I work for had been bought out. Because of that everything I was working on had to be put to the backburner while I sorted things out. I had to make some extremely difficult decisions, and I’d be lying if I said it didn’t mess me up for a while there. It’s been intense. I also still have i’s to dot and t’s to cross.

Ultimately it means that I’ll be moving from coast-to-coast and south of the border to work in the United States. It’s a bit freaky penetrating the bureaucratic nightmare that is immigration forms, and sobering as I send them out. But I’ll be joining the ranks of many great Canadians who crossed the border: Jim Carry, William Shatner, Mike Meyers… *cough*Beiber*cough*

I can’t say I know what this will do to my contributions; whether or not my new job will give me more time, less time, or if I’ll need to stay back until I even really know 100% what’s going on. I certainly don’t plan to stop contributing, but I can’t say how active I’ll be in the near future until I see where the chips fall, things are also still in a state of upheaval.

I am, however, still looking forward to Akademy. I’m set to give a 30-minute talk on design iteration; whether or not you are creating a new application or maintaining an old beast, effective iteration is the key to great design. 😉

going-to-akademy-slim.png

That Time of the Cycle

With Plasma 5.6 long out the door, it’s time for the traditional changing of the wallpapers! Or at least, showing what the next wallpaper will be.

With Plasma 5.7 we won’t be venturing too far from where we are in 5.6. As I mentioned in a previous post about wallpapers we have been paying attention to the feedback, trying to find something that hit the right balance. The 5.6 the wallpaper seemed to hit that mark, so you’ll see fewer dramatic swings in the wallpaper direction; we’re goanna stick with what works for a while.

Here’s the 5.7 wallpaper, “Skylight”;

2560x1600.png
(Download 2560×1600)

I’m keeping very close to the formula of the current wallpaper, and generally this is what people should expect for a few wallpapers for the next few releases of Plasma. I’ll vary the ‘material’ and positions a bit in the future, but I didn’t want to do that too much during our transition to perspective this release… Perspective was the one thing I meant to do with the current wallpaper, but for various reasons it didn’t happen.

One thing that also came up was assembling the old wallpapers somewhere for the people who preferred a previous release. I’d like some opinions and feedback on a few questions if we decide to do this;

  1. Where would you want all the wallpapers stored? A ‘legacy wallpapers’ package, the current additional wallpapers package, OpenDesktop?
  2. Would you want me to “George Lucas” some of the wallpapers, and tweak/improve the lower-quality ones for re-release? Or should we just drop some of the really early ones?

So, what do you think we should do with the older wallpapers? Comment below, let us know!

Touring CERN and the LHC

During the Sprint at CERN everyone got to take a tour of the Large Hadron Collider, it was a fantastic time and a proud moment for members of the KDE community to see the massive and incredible machines which happened to have KDE software running at the controls.

IMG_0574

There were many different systems on display, not just KDE!

We had a rare opportunity to actually go 100 meters underground and look at the scope of it – grand and atomic – and look at one of the greatest achievements of society with our own eyes.

IMG_0578

There were many different systems on display, not just KDE!

Once we got our eyes on the massive structure a couple of the guys pulled out a bag and said “Hey, want to see something cool?”

Of course.

IMG_0604

There were many different systems on display, not just KDE!

Over at the injector (where they feed matter into the LHC) some of the other VDG members had snuck in a bag of paintballs. It was ON. Much like a pneumatic tubes of the late 1800s, the LHC consumed the ammo with gusto. I was sure our giggling would give us away, but we made sure people crowded around the controls before anyone knew what we were doing.

IMG_0579

There were many different systems on display, not just KDE!

The way the LHC was laid out, there was various catwalks surrounding where the beam passes through. We found a pair of convenient walkways ripe for us to jump across which would let us get hit – we didn’t need to worry much about timing, after all, the gauges already indicated the first paintball was going 92.3% the speed of light.

bruise.png

The first hit! Left a small mark!

It was a good time. We had some bruises, other peoples heads and arms simply vanished at near relativistic speeds. We lost 3 members of the VDG, 5 WikiToLearn editors, and Sebas was the only Plasma developer to go, though watching him get sucked into a black hole made by a near-light-speed paintball was really, really cool.

As an aside, since he’s beyond the event horizon, I’ve taken over his blog. Any amazing accomplishments he makes from now on were actually all me, and I should get the credit.

IMG_0552

And that was our tour of the LHC. We’re confident in our productivity to take over for the now deceased community members, and we firmly believe the sacrifice was totally worth it. After the tour we got into our cars to drive back to the sprint proper – albeit with some more shoulder room in the vehicles – and we got back to work after turning the LHC into the worlds largest paintball cannon.

DWD Structured @ CERN

windeco

After a seeming eternity the unthinkable has finally happened; DWD has been discussed formally on an implementation level and it’s exciting to say that some parts are now under development. Thanks to the CERN Sprint we’ve had Martin Gräßlin, Sebastian Kügler, a couple others, and myself in one room able to make final decisions on how it will all come together.

Dare I say DWD is officially real, entering development, and coming? Yes!

Previously I’ve made two posts about DWD concepts, this post will summarize the basics of DWD as it has been finalized. Some parts of both designs previously posted have been used and I’ll make another post later including mockups with more detailed information, but for new here’s an overview of DWD basics;

Low-Level IPC

DWD will use D-Bus as its IPC, being implemented via the KWin Window Metadata Tier 1 Framework. This is for Qt/KDE driven implementations, but anyone can implement DWD via D-Bus.

Core Structure

At its core DWD will work with ‘Semantic Objects’ and ‘Priority Groups’. Semantic objects refer to things like ‘media player controls’, ‘navigation’, and ‘actions’. Applications bundle Semantic Objects into Priority Groups, then push those groups to the window manager.

The window manager will tell the app whether a group was accepted or rejected; a group is rejected if any single semantic object in that group is denied for any reason. Higher priority groups get first swing at embedding their controls, and it may affect widget placement in certain situations, such as phone controls.

From there applications just hide their own elements in response to what groups were accepted. There will be some events and flags as well, but we won’t get into that yet.

Customisation

One aspect to note is that DWD will offer no customisation on the client-side. I had gone down that rabbit-hole in an early draft and we all deemed it overcomplicated. Ultimately what applications need to know is that the controls are being served – not how or where they’ve been served.

One thing we did was look at is Gnome CSDs which offered all the craziness applications could possibly want, and we noticed they weren’t actually being all that crazy with it. Generally the same controls made repeat appearances and when it really comes down to it in practice there’s not much of a value in extreme customisation. As we said previously if you need extreme customisation and weirdness this may not be the method for you – which is fine. At the same time we would recommend application authors examine why they would need exotic controls, and why they specifically need them in the windeco.

Stewarding the Protocol

One thing that was discussed was who and how to steward the protocol. When I first posted about DWD there was backlash about KDE being a ‘protocol gatekeeper’. Afterwards I proposed an extension-based design which also had backlash because it could make the protocol technologically ‘complex and messy’.

Ultimately we decided to steward the protocol and simply work with anyone who wants to be included in the design process directly. We will accept input into where the protocol will go and provide any resources we can.

One thing that was made clear was that some groups are uninterested in considering the DWD approach after being asked. We all agreed it’s not worth making a convoluted extension system just to cater to groups which probably won’t participate, instead focusing on making the best protocol we can for those who want DWD. For those environments that will not support DWD I’m glad to say that it’s still 100% compatible and applications using it will continue to work as normal, they just won’t have content in the decoration. We will not be breaking other environments.

Again, we’ll be open and welcoming to anyone who wants to join us in working on and implementing DWD.

The Implementation Plan

Right now early work is being done on our existing frameworks to move them into position to implement DWDs. Once that is done we’ll implement the protocol with a minimal number of Semantic Objects, and using the low-level API port a small number of simple applications as a beta. Applications being considered for initial DWD tests include Konsole, Kate, KCalc, and similarly small apps with basic requirements.

After the API has proven itself on smaller-scale applications we would move up to heavier applications. KDevelop was mentioned specifically as a candidate as its relatively heavy UI could benefit from space-saving DWDs while developers could very quickly give us high-quality feedback. This may be where we move to higher-level classes which will hide away the group/object system as well.

Designs & Reference Material Incoming

I’ll be making another post later with designs which should be mostly accurate to what the final protocol will produce; accurate enough to place in the Wiki as design references for how applications should look when using the final DWDs.

While Martin will continue focusing down Wayland and making excellent progress, he also had a rough timeline for when we can expect basic DWDs make an appearance. I won’t quote him as it was an off-the-cuff estimate, but it’s exciting to know there’s light at the end of the tunnel, and that we’re out of the conceptual phase.

On a complete aside it was a complete pleasure meeting everyone. Great to see some of the friends I met last year again, fantastic to make many more new ones, and I wanted to thank everyone in the Sprint as well as those who supported it for making such a great event happen.

Special thanks to CERN for hosting this Sprint! Be awesome and support future Sprints by clicking the links below;
Via Paypal for one-time donations
Become an ongoing contributor and official supporting member

 

 

Plasma 5.5 Review

intro-splash

For those who haven’t seen it already, I’m very pleased to announce that I’ve been working with Michael Larabel over at Phoronix to post an in-depth review of Plasma 5.5.

You can read it here:
KDE Plasma 5.5: The Quintessential 2016 Review

I gotta hand it to every KDE contributor; I call this review comprehensive but there’s an incredible amount of information I could not cover in a sane article, and it could have easily been twice that length while still failing to hit every feature.

From me to everyone; you’ve all been knocking it out of the park, great work, and thank you. I’m looking forward to what the KDE community brings in 2016!

Google Deep Dream ruins food forever.

Google Deep Dream is an interesting piece of AI software which looks for patterns in pictures, much like humans may look for patterns in clouds. Deep Dream has been trained to find a few things, like eyes, animals, arches, pagodas, and the most fascinating part is that Deep Dream can also spit out what it “saw”. Then Google opened Deep Dream to the public and people started loading tonnes of images into the system, and when you combine food with Deep Dream it turns into the stuff of nightmares.

RUN NOW OR FOREVER RUIN FOOD FOREVER! Here’s pictures of food turned to ghoulish nightmare-fuel courtesy of Deep Dream;

Nope. NOPE. Great start. Never eating takeout again. At least nothing bad can happen to the humble doughnut.

Duncan Nicoll, thank you. Via Ibitimes

Duncan Nicoll, thank you. Via Ibitimes

GREAT. FANTASTIC. I didn’t like doughnuts anyway. ARE THOSE LEGS?

Ibitimes also had this. Spaghetti & nightmares.

Ibitimes also had this. Spaghetti & nightmares.

I loved pasta. I did once. Then, this. Now never again.

Asian soup via Reddit. Dammit Reddit.

Asian soup via Reddit. Dammit Reddit.

Asian soup creeped me out anyway. BUT IT DOESN’T HELP WHEN THE SOUP LOOKS AT YOU WITH MANY, MANY PUPPY DOG EYES.

Via Vr-Lab

Via Vr-Lab

Hey, look, what a diverse menu of terror!

I’m never, ever eating Asian again. Why does so much of it look fishy?

Thanks, again, VR-Lab.

Thanks, again, VR-Lab.

I, too, would be in the foetal position if my soup was a WRITHING MASS.

VR-Lab.... Shtap. Please.

VR-Lab…. Shtap. Please.

NO. NOT PIZZA TOO. I’M OUT.

Fiber UI Experiments

This week has been the lowest-level backbone things for the Fiber Browser. Mostly I’ve been designing the manifest class, which accepts a JSON file and produces a nice reliable API to interpret. Most of this browser will run on extensions, so the Manifest is one of the most important parts of this browser. It’s largely based on Chrome manifest files, however it differs in naming conventions (e.g. camelCase) and structural areas, the largest being “services” support. Services include things like “history” and  “bookmarks”. Services will have clearly defined APIs, and extensions using those services don’t need to know what extension is offering the service.

Earlier I put up a G+ post of one of my UI experiments for Fiber. I had created the following design based on the idea that the address bar is becoming obsolete, and needed feedback on my thought process. The idea is that the address bar is hidden inside the tabs, and when a tab is double-clicked it would expand to reveal the address behind the tab.

fiber-modesAside from some KDE integration, the original (nearly chrome-identical) design added nothing to the browser space.  I didn’t want to make a browser that was the same, but I don’t like changing things just for the sake of being unique.

uniqueforkMy G+ post was a fleshed-out version of my favourite pencil wireframe. The first thing I looked at was the wasted space in browsers; the current “space race” has lead to one generally accepted design with tabs on top and content controls on a second row. Sometimes a bookmarks bar. Lots of smart engineers at Google, Mozilla, Apple, Microsoft, and Opera have looked at UI controls in browsers, it’s not an accident that this is the current “best design”. The current browser layout offers immediate access to important controls, with the two expanding elements (tabs and address) being on two rows. but the address bar didn’t to anything the search bar couldn’t, aside from address a very specific URL.

So, after my design and some more thinking I took a look at browsers again, and I found only IE broke from the trend by putting everything on one row with approximately half the toolbar going to the address bar, and other half going to the tabs. The benefit was saving vertical space, but with the downside of limiting how many tabs a window could multi-task easily.

internet-explorer-11This was very close to my design with the sole exception being that the core functionality of the line input is an address bar – where mine was search. I was actually a little shocked at the back/forward buttons too, because mine looked similar. Granted, I was actually aping an older Firefox design, but that’s beside the point. 😛

So I took a more thorough look at more factors, and settled on my current design goal (pending YOUR feedback!); please note that the new tab page is a placeholder.

fiber-full-12The first thing going on is moving the search bar in a position to the IE address bar. After careful consideration, I realised the search bar was going to be much more heavily used, so it needed better placement closer to users’ muscle memory. Additionally, since websites tend to place navigational elements on the top or left, it made sense to have the search be nearer to where the mouse might be. The search bar will also search your bookmarks and history, so it should find regularly accessed URLs efficiently. Depending on the extension rollout, the capabilities of the search bar should be adjustable.

Bookmarks have been moved from a tab to a menu button. I don’t know what I was thinking putting bookmarks as a tab. Too bad I don’t do drugs, or I’d have an excuse. I also put in the ‘new tab’ button.

Next is the preview. There’s the thumbnail, the loading status bar, the highlighted domain, https status, and tab type.

fiber-full-12-markedNot seen would be the transient URL bar. The bar would be colour-coded, and extensions could augment it to add icons or snippets of text. For example, it would be neat to have a phishing extension warn users before they even click a dangerous link, display if the link will run a popup, etc.

One thing mentioned in the original G+ post was phishing and the address bar; with no address bar, how can you spot phishing? Simply put, I don’t want to rely on the address bar to warn users about phishing. I just think it’s a bad idea which shouldn’t be relied upon, as I don’t believe most users understand how URLs are composed – and while it may be simple to many of us, addresses have many moving parts. Additionally if a website looks convincing enough, users may not feel the need to double check the address bar.
Far, far later in development, possible a version or two after release, I plan to add safety extensions. I’m interested in the Google Safe Browsing API.
Otherwise, the only thing not shown in the new screenshots is the address bar which, like the first designs, would expand by double-clicking a tab. I may also look at putting in a toggleable button for the same purpose, as some persons have difficulty double-clicking, or may want faster access.Any C&C would be deeply appreciated, this is an evolving design and I’d like to have it well thought-out before I begin programming that aspect of the browser.

Software vs. Philosophy; Raging against Microsoft as a Company is Backward

Today the FOSS world was shaken a bit with some of Microsofts announcements, mainly after the announcement of a cross-platform version Visual Studio which has a native Linux version. While not strictly their original brand-name IDE, it’s still a big announcement for Microsoft to put one of their top brands so ‘quintessentially Windows’ onto Linux… But the most interesting part of the announcement was not the release, but to me, it was the 3 distinct groups of onlookers who have been commenting on the news that the Redmond giant has quite boldly stepped far deeper into open-source wilds than it has been before.

The first group of people are the ones who have been supportive, praising our ‘enemy of old’ for moving away from lock-in and towards turning a new leaf; especially since it directly conflicts so completely with how they have historically monetised their business. Previously for Microsoft to win “everyone else had to lose”, but it has become apparent that this mindset is no longer in their DNA.

There’s the group of people who are looking at the software as what it is; a new development IDE which may be better or worse than contemporary Linux development applications. Some have noted it’s a fork of Atom, and while it disappoints some who wanted to think it would be a pure-MS codebase hitting the light of day – it’s still interesting to see Microsoft release products in the true nature of Open Source, where we fork software to make improvements we believe will serve it best.

But the group I’m most interested in addressing is the haters, the people who refer to Microsoft as “M$” and spit on any work the company produces. The people whose philosophical hate of yesteryears software giant continues unabated, their seething vocal loathing denouncing their work as the next plot or substandard because of its ‘capitalist origins’.

I’ll admit I went through a ‘zealot’ phase when I got into Linux – because I was young and stupid and half a hipster. The first year I thought I was awesome for ‘being free’ and ‘sticking it to the evil companies’ like Microsoft. I refused to use non-free drivers, and thought I was liberating myself by jacking-in my laptop because there wasn’t a free wireless driver. My setup was sub-optimal, and I was stupidly proud of my broken barely-functional equipment.

Today I find the functionality and flexibility of Linux suits my personal development habits, I find the desktop pleasingly functional, and I use software that works for me – regardless of the source. I use Steam because it enables me to entertained without rebooting my computer, with AAA-games such as Bioshock Infinite and Cities: Skylines running perfectly. I use the Xbox controller because extended play on any other input will hurt me. I appreciate that there are free alternatives which offer me a guarantee of ‘shenanigan-free’ computing, but where the software is good I will use it, even if it’s closed. If Microsoft releases products on Linux I may use them if they have a place – even if those applications are not free software.

When it comes to hating Microsoft, to me, that idea no longer makes sense. I will freely say I do hate and loath *parts* of the company, but to hate the whole umbrella regardless of the people involved is becoming backward. I love the teams who are saying “hey, lets get into open-source” while also raging against the legal arm attempting to leech from Android. It’s the same with Google; I love the parts of Google that sponsor open-source events while being wary of their disturbing advertising model.

You could argue that even if you only support the positive sections of a company the negatives benefit as well; that by supporting the Visual Studio team you’re potentially helping the slimy legal arm survive – but in reality if Microsoft sees support and benefits from better alternatives, they will shift their resources in that direction. A company that large requires time to turn the ship around, and there’s no real point in taking pot-shots at them when you can see their teams genuinely charting into such unfamiliar waters.

The fact is Microsoft isn’t a single hive-mind nest of businessmen looking to suck every dollar from the digital age. It’s thousands of upstanding people with real human problems who genuinely want to see the software they write improve the world. I don’t see cronies stepping onto public transit disturbing the bus driver because of their maniacal cackling – the world didn’t see an uptick in animal sacrifice and Hot Topic sales as Microsoft recruited its developers.

Am I going to use this new cross-platform Visual Studio? Probably not – I’m getting familiar with Qt Creator – but I will genuinely try it at some point.  For whatever reason the Redmond camp has become friendlier with open-source… Be it the fact that they aren’t the 800-pound gorilla, that Gates and Ballmer are no longer at the wheel, or because open systems are dominating new markets; it doesn’t matter. The company is improving its philosophy, and I think we’ll be the foolish ones if we dismiss it. If you’re a hater, hop onto the bandwagon of people paying attention to what they do – they’re publishing software in open waters, we’d be morons not to encourage, extend, and integrate.