Minimalism and Getting Things Done

Posted by admin on October 14th, 2018 filed in Development, Games
Comments Off on Minimalism and Getting Things Done

If you have more ideas than you can implement, you are suffering from DaVinci Syndrome. It’s the opposite of Getting Things Done Syndrome.

I just jot down the ideas “for future reference”, which helps if I had the idea in the middle of the night and would rather go back to sleep. ;-) When I wake up, I find scribbled sheets of paper next to my bed with RPG stat balancing tables, illegibly labeled graphs, nonsensical character skill trees, halfbaked game mechanics, drawings of funny quests and background stories, all written in an arbitrary mix of English and my native language.

Despite the fact that I have a folder of ideas, I never finished developing a game.

Nothing against brainstorming to get a feeling for the big picture. But “having lots of ideas” is not a good skill by itself. If the ideas don’t fit together, nothing ever gets done. A good game dev skill is the ability to find the minimal set of ideas that make up one (simple) game. And expand from there. Trust me, the “simple game” will grow complicated by itself. Agile Developers call that completing the minimum viable product (MVP), I like that term.

“Adding ideas” is the death blow when starting a new project. It’s super easy to do, and it’ll pull you right down into a never-ending feature creep. When my todo lists start sounding like I’m breeding an egg-laying wool-milk-pig, I need to kick myself in the butt and stop that. I added an extra chapter to the bottom of my notes to collect “future/nice to have” ideas. This is where I cut and pasted everything that is not vital to the MVP. And then, I had a second and third round, and set aside some more. The goal is to trick my brain into thinking these todo items are not lost, we’ll just do them… “later”. :p

A good method is to join a 24h dev jam or a hackathon. It forces you to think in terms off “what do I have to show to the others after 24h?” Here are great examples of minimalist games that the developers can be proud of — and expand on.

  • A minimalistic low-fi No Man’s Sky :-) — Supports generating a star system with random planets, one player with one starship, landing on and lifting off from a planet, walking on the planet, and picking up an item on the planet.
  • Procedurally generated vehicles — Watch the random vehicle succeed or fail to travel across the bumpy landscape to the goal. Click “up” on good cars and “down” on bad cars to improve the overall outcome, and teach your session to produce good cars. (My best car design had three wheels, the third one on top, when it tipped over, it simply used the third wheel and kept going.)

My current attempt at getting things (i.e. 3D games) done involves a new cunning plan: I’ll make a text-only interactive console game first. It’ll procedurally generate the game world and print log files with which I can confirm it does what I want. And then I worry about the 3D rendering (the part where I always get stuck) later. Brilliant, eh? Now, how do I verify that the game data in the log has been generated correctly, hmmm… Let me just quickly write a 3D viewer for it! … … O_O Oh no! Not again!


Free Ad-Sponsored Antique Sci-Fi (LOL)

Posted by admin on November 4th, 2017 filed in Science Fiction
Comments Off on Free Ad-Sponsored Antique Sci-Fi (LOL)

These high-quality scans of Galaxy Magazine on Archive.org contain English classic science fiction stories from the fifties. The covers and several illustrations inside the magazine are also visible. If the stories are a bit old fashioned for your taste, the illustrations can still be inspiring. Or amusing. :D

Added bonus: Next to the stories, you get to see old-fashioned advertisements for mechanical computers named Geniac and get invited to join the “Rosicrucians, San Jose”. :-o


Machine Learning Resources (2)

Posted by admin on May 21st, 2017 filed in Development, Linguistics
Comments Off on Machine Learning Resources (2)

Here’s the Youtube channel with recordings of presentations from the Machine Learning Conference in Prague 2017 and 2016.

Natural Language processing, machine translations, personal assistants and chatbots, recognizing malware or detecting hardware errors, predicting effects in biochemistry, financial forecasts, cheating at gambling, … Some presenters have opposing or very similar ideas (and probably didn’t know of each other), quite interesting. :-)


Feynman and Sagan

Posted by admin on April 29th, 2017 filed in Space
Comments Off on Feynman and Sagan

Sometimes it’s nice to have a stream to watch while doing something boring that does not occupy one’s whole attention. Yes, I am lookig at you, ironing board.

Enjoy!


Learn From Sauerbraten

Posted by admin on February 12th, 2017 filed in Development, Games, Open Source
Comments Off on Learn From Sauerbraten

Sauerbraten.org is an Open-Source free multiplayer first-person shooter, and also a game engien and map editor. If you like games like Doom / Quake / Unreal Tournament / Marathon, Sauerbraten is very similar.

Note that it’s not a quick game creation kit, and you cannot take their multi-media files (they are not open source). You can look at the source code and learn from it, or you can mod the existing game and create a map and interactions.

If you ever wake up one morning and find yourself thinking, “Gee, I’m gonna write my own MMORPG!”, look at this project’s page. THIS is the minimum amount of features that you would have to create on your own.

Music, sounds, textures, models, animations, tools, networking and syncing, event handling, settings and preference handling, executable files for various operating systems, user-friendly error and exception handling, map loading and model import, physics, particles, HUD, GUI. And I probably forgot some items here. :D


The Future of NetBeans

Posted by admin on October 4th, 2016 filed in NetBeans, Open Source
Comments Off on The Future of NetBeans

As you already heard from Geertjan’s Blog, Oracle submitted NetBeans IDE to the Apache Foundation. Geertjan’s post focuses on the good aspects of that move. NetBeans has been open-source before, so we would not lose the forked source in any case, but what will be different?

The major change affects licensing: The Apache license does not allow certain dependencies ((L)GPL), so NetBeans will need to make adjustments (I don’t know what kind) to its code base to work around that.

One big difference will be, that commercial sponsors have time, knowledge, and capacity to include valuable integrations out of the box. Being the reference implementation for the newest Java features always was a unique selling point for NetBeans. Oracle said it will not withdraw its employees (not right away…) and Java 9 seems to be covered. But with more and more volunteers replacing paid employees, will future integrations come with the same speed and depth as before?

On the other hand, Apache is more neutral and a lot more open, which is definitely more fitting for NetBeans than Oracle was. That will likely inspire new contributions from projects that previously did not want to, or could not, work together with Oracle. In the worst case, the IDE will lose depth on one side and regain depth on another side?

The Apache Foundation is an NPO, and it pays for its servers with donations and it is staffed by volunteers. NetBeans has had many volunteers before, but the large advances were always made by paid developers with internal knowledge of the JDK, and for whom this was their dayjob. Consider that large companies only switch to an IDE if there is professional support for it. Apache does not offer support themselves, but the success of the Apache servers has resulted in several companies being founded that offer commercial support for them — the same could happen with NetBeans.

NetBeans was fortunate that it was supported by commercial sponsors (Sun Microsystems and Oracle) during its “adolescence”, while it grew and developed the most. Now it is “an adult”, its main features are solid. I think it is actually in a position where it has a fair chance fending for itself. I for one already signed up to be a wiki author on apache.org, let’s see!

Sources:

  • http://incubator.apache.org/projects/netbeans.html
  • https://wiki.apache.org/incubator/NetBeansProposal
  • https://jaxenter.de/apache-netbeans-46427
  • https://blogs.oracle.com/geertjan/entry/netbeans_and_apache
  • https://jaxenter.de/apache-netbeans-2-46513


Procedurally Generated Dreams and Ambitions

Posted by admin on September 24th, 2016 filed in Development, Games
Comments Off on Procedurally Generated Dreams and Ambitions

Everyone is talking about large procedural space games… with no load screens and smooth transitions… practically infinite systems and endless planet exploration… And I sit here dreaming I’ll complete writing a game as complex as … NOCTIS!

One day I’ll be done! :-)

I basically agree with what Paul Kilduff-Taylor (the developer of the game Frozen Synapse) said about expectations and reality in his article “Promising the Earth“. Yup, I’m referring to a certain space game (let’s call it NMS) that was released in Aug 2016: A huge hype, accompanied by a huge amount of pre-orders, followed by a huge let-down.

I also pre-ordered this AAA-priced game when the developers (HG) announced the build went gold. I had missed several years of hype that led up to the recent debacle, so I myself am not emotional about it. In contrast to part of the community, which is very emotional: Forum discussions had become so toxic that I refused to go near NMS’s Steam forum for a month.

I read up on what the outrage was about, and I mostly understand it. Yes, some rumour-mongers hyped themselves up about imaginary features. But HG also made ambiguous and contradictory public statements. Even with goodwill, I cannot come up with a re-interpretation of some statements in HG’s favor that makes sense. On the other hand, the accusation that this is a purposeful fraud makes no sense either. HG has produced games for years, the developers’ identities are known. It would be ridiculous to assume they have planned to abandon their careers, and all go into hiding, on the small chance of one random hype lasting long enough.

Also, the money HG made is revenue, not profit. I don’t have any insight how much money a dozen people need to rent homes and office space, and live and work for four years. But the detractors pretend that HG has zero expenses nor loans, kept 100% of the revenue, and ran away after the release to lead rich lives. In reality, the devs have been committing patches regularly since the release. (Admittedly, the patches were fixes for bugs that QA should have caught half a year ago, which is embarrassing at such a price, but the devs are clearly still on it.)

I only knew of NMS as a single-player game, so I am not one of those who are waiting for that one patch that magically adds massive multi-player. I expected that the only trace I will see of others in the same universe will be “discovered by” labels on things. However, the trailers do imply cool features that were not present in the initial release — such as consequences for faction alignment, working portals, and superior animal AI.

Customers are angry because HG have made no explicit acknowledgement along the lines of “This is an Early Access Build” or “The following features are missing a few months’ worth of finishing touches, and here’s the timeline when we’ll add them“.

I incredulously follow the exploits of several enthusiasts who dig for hidden clues that might enable all those missing features… They seem to be smart and can think outside the box, their approach is just perfect — If NMS were a puzzle game like MYST… which it isn’t.

Their rain-dances around portals and beacons are plain superstitious behaviour. If someone tells you they found a clue in “three points forming a triangle”, or “two points on the same line”, or “a face they see in the blurry wall texture”, anyone’s alarm bells should ring.

I gave them the advice to try to falsify their hypotheses. As soon as you think you’ve found a pattern, simply attempt to disprove it. E.g. if you have the hypothesis that the flags at monoliths point towards the nearest portal, count how many portals you find in that direction — and compare it to the number of portals you find in any of the other directions, in the same time frame. If the numbers are not radically different, then portals are merely distributed randomly, and it was meaningless that you found one in the flag’s direction.

I’m sad we’ll find them disappointed soon, when the last of them realizes that kind of depth and mystery simply isn’t in the game. For comparison, when the game Obduction came out, several equally enthusiastic MYST fans had worked out solid solutions and walkthroughs within a week. In contrast, for NMS, there have been zero revelations in two months. I don’t expect any. (I still hope for free DLCs though.)

And if not? NMS is beginning to look like the perfect subject for a future study in Procedural Generation of Mass Hysteria and Superstition in the Internet Age. XD


What Makes an AI Character Appear Intelligent?

Posted by admin on September 22nd, 2016 filed in Development, Games, Steampunk
Comments Off on What Makes an AI Character Appear Intelligent?

Watch this great Game Dev Conference presentation about how Irrational Games developed an artificially intelligent computer-controlled character:
Session Name: Creating BioShock Infinite’s Elizabeth by Shawn Robertson

Elizabeth is an important computer-controlled character that follows the player around through the story. It’s essential for this character to appear intelligent and helpful. She must not stupidly / accidentally block players from achieving their goals.

While she is idle, she focused her attention on scene elements that the players can also see. It creates a shared reality, the players are reassured that this character perceives the environment with the same senses as themselves. She casually reads posters or looks at shop windows. She reacts emotionally to passers-by and the player and events (smiling, gasping, pondering, frowning), timed at the same intervals as an exploring player would do it. If she didn’t react, the player would lose trust in her sanity. At the same time, she does not get stuck gaping at decorations when something more important happens, she doesn’t stare or follow you creepily, and she does not annoy the players by being too commanding of their attention — all very fine lines not to cross.

They achieved that by tagging the environment with meta info such as, “within this radius, this spot attracts attention” and how it can be interacted with (she will look at it, touch it, point at it, run towards or away from it), and how important these elements are relative to each other: An attacker is more important than a shop window; an attacker has a wide radius and a shop window a small radius. The ability to seemingly distinguish importance and focus attention is what makes the AI character appear smart to the player.

When she is active or in combat, she has useful skills to help the player – although she never fights herself, it’s impressive to see her quickly hand the player a spare weapon or ammo in a moment of need. Also, she doesn’t get lost nor stand in the way, like dumb NPCs have done in the past – the game teleports her to strategic spots.

Cool video to see how much work went into this character to make her appear intelligent and natural. Now, every time I complain about a stupid NPC, I also think about how/if they could have avoided that stupid behaviour.


Unthawing my EVE Online Toon – for free

Posted by admin on September 1st, 2016 filed in Games, Space
Comments Off on Unthawing my EVE Online Toon – for free

Listen to the nice lady, she gets us back on EVE online, for free: introducing clone states and the future of access to EVE Online

Up to November 2016, you had to pay monthly to keep playing beyond the trial period. After that, existing as well as new accounts can be in one of two states: Paying customers will be Omega Clones. And freeloaders (yup, that’s me) ;) will be cheap mass produced Alpha Clones. When you start a new free account, or stop paying on your existing account, you are reborn as Alpha Clone. You can keep playing, but lose all pay-to-play Omega skills.

Games with free/cheap accounts tend to attract botters, but CCP is known to be pretty good with analysing their metrics. It wouldn’t surprise me if they could tell cheaters from real players.

Serious EVE players will keep paying and enjoy their Omega status. Skill level directly depends on the time you spent as paying customer, and high-level accounts have much to lose: They can command huge ships and build citadels, and whatnot. I don’t even know — you can tell that my lowbie toon was pretty far away from reaching that state.

During my free month, I just wandered about in highsec with my buddies, the probes, and scanned for anomalies (which contained loot) and signatures (which contained death-by-pirates). Trade economy, you say? Gigantic fleet battles, you say? That sounds kinda stressful, doesn’t it? Nah, my probes and I were happy being filthy casuals for a while. And from November on, I have the opportunity to be a filthy casual again.


Generating Natural Looking Video Game Worlds

Posted by admin on August 7th, 2016 filed in Development, Games, Hacks
Comments Off on Generating Natural Looking Video Game Worlds

No Man’s Sky was created by a small team, but it will contain a gigantic number of different, explorable, natural looking planets. HelloGames say when two people navigate to the same coordinates, they will see the same planet (minus any mining damage done by others). At the same time, the download is only a few Gigabytes, most of which is music. Clearly they neither designed all planets manually, nor are they random. How does No Man’s Sky do it?

Everyone who generates random maps for their video game notices immediately that such generated content turns out quite ugly: Your first random walls are too angular and in the way. Your first random hills are too spherical, your first random streets are redundant, and your random artefacts look just nonsensically arbitrary. Raw randomization is just as unnatural as raw geometrical shapes. They will fail to make the player believe that “an intelligent ancient civilisation was overgrown by wilderness” here.

For a few years now, I have been dreaming of writing (a tinier, simpler variant of) a game like No Man’s Sky. I investigated how game developers generate maps and textures, and learned that they use mathematical noise and fractal functions. Custom hash functions ensure that generated results are evenly distributed and cover all cases. Instead of the naive extremes of either using fully unconstrained random numbers, or using fully constrained formulas, smooth noise formulas output natural gradient values. When you visualise e.g. Perlin Noise output as grayscales, you do no see a clear curve or a geometric object. The distribution looks like blurry bubbles or a bit like “hills and valleys”:

The cool thing about Perlin noise is that it’s really just a function. You give the function some input values, and it returns a value. When you input neighbouring values, it will return a neighbouring value — and not a completely different, unrelated random number. Secondly, you can trust this function to give you the same output for the same input, reproducably, — that’s why two No Man’s Sky players can visit the same “randomly generated” planet and see the same hills.

Which decisions do you make based on noise functions during world generation? Totally up to you! (And totally independent of the game engine, which eventually draws the calculated data points.) Game developers do not use Perlin noise only to generate hills and valleys for heightmaps. They also use scaled layers of Perlin noise as factor to smoothen out textures, clouds, waves, color gradients, even for a more natural distribution of objects on the map. All you need to do is multiply the function’s input/output numbers (0.0-1.0) to fit the scaled ranges that you need. E.g. if you are generating RGB colors gradients, multiply the output by 255. If you generate continents, multiply by 10000 km, if you generate hills, multiply by 1km, if you generate wrinkles on a wall, multiply by 10 cm, etc.

It’s fun to design a mapping between Perlin noise layers and a world. Experiment to get a feeling for it.

In the simplest case, fill a 3D quadrant with cubes: Generate noise for input coordinates with different step sizes (try 0.001 or 0.01 or 0.1) and compare what it looks like. RGB color is a good way to visualise a cube’s Perlin values quickly. Or try this: For each output value that is larger than a chosen threshold (try 0.5 or 0.25 or 0.75), you attach a cube at a coordinate that is a multiple of the input coordinates — and otherwise you attach nothing. Different step sizes or different threshold values will make it look like you are zooming in or out of the noise cloud. Your cubes will be distributed along many small bubbles, or as one big bubble.

If the rendered demo output looks either all empty, or all full of cubes, that means you are inside a “bubble” of the noise. In this case, try larger steps. If the rendered output is a dense “too many cubes – no cubes – too many cubes – no cubes” pattern, try smaller steps. Play with these factors, and you’ll get the hang of what effects you can achieve with noise functions.

I don’t recall which step sizes I used, but the following screenshot already shows bubbles and caves emerging in the block. I wanted larger caves, so changed the step size (I divided by 10) to “zoom in”.

When you have a noise that looks like what you want — the perfect bubbles that look like hills or caves, for example — then start mixing it with other formulas. And who says that step values or threshold values must be constants? You can generate Perlin noises at different step sizes, and add them, layer them, stagger them. You can take a sphere or plane formula and intersect, or even use formulas as variable threshold values. Combinations several conditions — say, you only want to generate trees above water level, but below snow level, and you want them in some regions of continents, and within those regions only in a few clusters… etc.

Have fun experimenting. Understanding noise functions is only the first step. Advanced developers use many more functions (or write their own) — look at this https://en.wikipedia.org/wiki/Superformula to see what I mean.