Tuesday, February 2, 2016

Abundance 360 Conference Takeaways

Some of you may have heard that I spent the last few days in Los Angeles attending the Abundance 360 conference. Organized by entrepreneur Peter Diamandis, my favorite guest was futurist Ray Kurzweil, who spoke about his systematic methodology for predicting the future.

Peter Diamandis and Ray Kurzweil on stage at A360

It was my impression that most attendees were entrepreneurs who don’t closely follow exponential technologies. In fact, 95% of them run businesses outside of IT, AI, or science. 30% alone work in real estate, which quite surprised me. The majority of attendees were age 40 or older.

Since I’m in the business of general AI and futuristic technologies, I didn’t learn much about my field from the conference – but I don’t mean this in a negative sense.  I actually found it quite useful to connect with business people working outside the sciences, because they have a different point of view and tend to notice different things than my colleagues.

There were a number of interesting questions asked, including “What technology may disrupt your business in 1-3 years?” and “What will not change in the next 20 years?”

I also saw that there’s a community of successful, wealthy, experienced people following Peter Diamandis. This was a positive surprise for me, and I realized that if I need such a community in the future, it won’t be necessary to build it myself from scratch. Going forward, it will be sufficient to connect with others who have already established this network of support and thinkers.

Finally, it became clear that most exponential technologies and businesses discussed will be obsolete when we develop a truly general, human-level AI. For me, it’s critical to think about where to invest or not, given that many investments won’t be valuable 20 years from now. It’s also interesting to note how certain exponential technologies are in competition with one another – if we have great VR in the coming years, it may eliminate the need for a Hyperloop, as people will travel less.

I’d like to hear more about your favorite exponential technologies and how they will perform in the next decades – please feel free to leave your ideas in the comments.

Many thanks for reading!

Marek Rosa
CEO, CTO & Founder
GoodAI, Keen Software House
:-)

Facebook: www.facebook.com/GoodArtificialIntelligence
Twitter: @GoodAIdev
www.GoodAI.com
www.keenswh.com

Thursday, January 21, 2016

What is Intelligence?

Today I will introduce how I define general purpose, human-level intelligence. This blog post is not limited to artificial intelligence, but does answer some basic questions that can help us progress towards artificial general intelligence (AGI).

You can also watch a longer interview with me where I discuss this topic:



Some people may consider what I write here fairly obvious. However, I believe that for others my description will offer a new perspective and help them understand how I see the big picture.


Simple description of intelligence

Intelligence is a tool that an intelligent agent uses to learn, adapt, solve problems, and achieve goals in a dynamic, complex, and uncertain environment. Intelligence achieves this by representing relevant parts of the environment in a simplified, abstracted mental model where searching for optimal solutions is faster and cheaper. Intelligence has fewer resources (atoms, computation cycles, energy, etc.) than the environment, so the intelligent brain must use resources in a smart way.


Evolution vs. intelligence

Evolution:
Like intelligence, evolution tries to find solutions or optimal ways to operate in a complex environment. However, instead of using a mental map or representation of the real world, evolution uses the real world – an environment that is extremely complex and has a nearly infinite number of parameters.

We can say that evolution is a “dumb” algorithm because it does not plan ahead and every solution has to be tested in the real world.

For example, we know that birds build different types of nests. Nests near the ground (where there are many predators) tend to have a protective dome structure, while nests in trees have an open cup shape. Birds do not use their intelligence to decide that when they build nests on the ground those nests should have a protective dome – instead, it is believed that it took generations before evolution found birds through natural selection who were suited to building ground nests with protective domes. Other birds are restricted to building nests in trees, because they haven’t evolved ground nest-building skills.

We can say that evolution “learns” by reusing and combining things that have already worked. However, its memory is limited – if it finds itself at a dead end, it has limited options to backtrack to a previous working solution.

Evolution is blind and has no sense of where it is, where it was, or where it is going.

Intelligence:
Unlike evolution, intelligence searches for solutions in a simplified mental representation of the real world. The intelligent agent observes a portion of its environment and tries to create a simplified mental model of that environment. Since the agent operates with limited resources, it will model only those parts of the environment (internal, external, its own thinking, other agents, and so on) that are relevant for finding optimal solutions.

Since this representative model has fewer parameters than the real world and includes only relevant information, searching for solutions is faster and various non-evolutionary optimization strategies are made possible. These strategies include planning, forecasting, learning, abstracting, connecting things that are not close in time or space but may be related to one another, and more.

There can be higher or lower levels of intelligence and adaptability – depending on the abilities of the intelligent agent. At a certain low level, an agent doesn’t even need to be adaptive or intelligent to achieve goals, but can succeed simply by following a set of rules (discovered, for example, by evolution).


Properties and abilities that enable intelligence

Patterns are critical to the functioning of intelligence. A pattern is something that happens in a regular and repeated way (not random noise). Our current human approach to creating a mental model is to see the world as a hierarchy of spatial and temporal patterns which manifest as letters, words, songs, behavior, events, physical laws, and so on.

Intelligence depends on:
  • Pattern detection - trying to find causal correlations between things. There are patterns in the universe around us. We know some of them, but many of them are still a mystery we need to discover.
  • Pattern generation - using detected patterns for something new, or applying patterns to unknown environments based on hypotheses we’ve generated. Through pattern generation, plans can be tested and goals achieved.
We can learn new patterns by transferring patterns from domain to domain, essentially problem solving by analogy. Learning by analogy means acquiring new knowledge about something (an object, an action, a problem, and so on) by transferring useful knowledge we already have about something similar (a similar object, action, problem, etc.).

For example, if someone learns how to use a hammer, this basic movement can later help them use an axe.

Attention: Attention is a phenomenon closely connected to the intelligent use of limited resources. Attention is a critical part of intelligence because intelligence models only those parts of reality that are relevant for a problem the agent is trying to solve. This is how I understand all levels of attention – mental, sensory, goal directed, etc.

Put simply, the intelligent agent uses previous experience and knowledge about the world to focus its attention on specific parts of the real world or specific parts of the model. The mind has limited processing and memory resources and cannot do or process everything at the same time.

People are always searching for new patterns, because finding patterns is what optimizes the results of intelligence and helps it achieve goals faster and more cheaply. We can say that new and useful patterns are as valuable as gold. However, pattern detection and generation cannot occur all at once or without preparation. Detecting and utilizing patterns (i.e. increasing intelligence) involves both gradual and guided learning.
  • Guided learning means that there is someone (a mentor or society) who has already discovered many patterns for us, and we just need to learn the patterns from them. Without guided learning we would have to reinvent everything people before us already discovered.
  • Gradual learning means that we learn abilities one by one, where complex abilities are based on previously-learned abilities.
    • For example, before you can start programming, you first need to learn to write, read, speak, understand the environment, and so on.  Without gradual learning, we’d have to spot patterns in places where no lower-level pattern has been learned – making it a very difficult search problem.
    • If someone gives you a book written in Chinese, you most likely won’t be able to read or understand it. But if they give you a textbook and you study the first chapter to learn basic Chinese language patterns, you can then start the second chapter and learn more advanced patterns. Eventually, you will be able to read that book in Chinese.
Other mechanisms critical for understanding intelligence include:
  • Abstraction: allows us to see the correlation between one object and another at a high level, something evolution is unable to do
  • Uncertainty: the mental model of the world is a probabilistic model, because we don’t always know why things happen as they do in the real world. Using a probabilistic model prevents us from having to go into deep investigations on every matter, and allows us to act or move towards goals without complete certainty
  • Generalization and Specialization: the ability to move from the specific to the general or from the general to the specific

IMPORTANT: The above properties and abilities are not sufficient for a human-level intelligence! This is why we have invented a framework for studying intelligence properties and abilities in a systematic manner – you can read more on this in our upcoming R&D roadmap for 2016.


Conclusion

Keep in mind this important principle: intelligence works in a simplified representation of the world where it searches for patterns that help it achieve optimal solutions. This model is much simpler than the real world and it also has a clearer structure. Intelligence can implement many optimizations that are impossible in real world investigations (planning, abstraction, and looking for correlations between events) and achieve efficient results. Intelligence always looks for more efficient, cheaper, and faster ways to use limited resources (mental, environmental, time resources, etc.).


Your feedback

Please let me know how you define or describe intelligence, if you think my description is too shallow or broad, where we can simplify it, and whether some additional details need to be added.

Many thanks!

Marek Rosa
CEO, CTO & Founder
GoodAI, Keen Software House
:-)

Facebook: https://www.facebook.com/GoodArtificialIntelligence
Twitter: @GoodAIdev
Forum: http://forum.goodai.com
www.GoodAI.com
www.keenswh.com

Thursday, January 14, 2016

The KSH roadmap for 2016 – Space Engineers & Medieval Engineers

As I promised in the Year in Review blog I published a couple of days ago, I would like to share with you the Space Engineers and Medieval Engineers roadmap for 2016. This comes in contrast to our decision to only talk about features that are actually present in our games (fully finished or work-in-progress) and not speak about planned features, ideas, future dates, our roadmap, etc. The reason why I am making this exception now is because I believe that after two years in Early Access, our players have a better understanding of our development decisions. Additionally, people deserve to know how our games are shaping up, especially Space Engineers, as we are approaching the final turn in the game’s development before it leaves Early Access.

Before I continue, I would like to remind everyone that everything I say here is subject to change.
Important: some of my comments may sound harsh to my colleagues who are actively working on these games. Let me assure you all that we have the same goal: make our games great!

I also want to mention that I will not go very deep into details or explain each and every feature separately in this blog (that’s for separate design documents). Instead, I am going to be playtesting both games live on Twitch, as I did on Monday – most likely on a weekly basis, usually on Mondays – where I will point out the issues I find in our games. We are also planning to do focus testing groups where “random” people with no experience with Space Engineers / Medieval Engineers play the games for the first time (to see what issues they encounter, where they get stuck, what they enjoy most, what troubles them, etc .)

Space Engineers roadmap

After two years in Early Access, I believe that Space Engineers has a vast amount of features - perhaps even more than what was needed. But we always wanted to keep the development going and add new features constantly since there are so many community suggestions that could be a great addition to the game. For example, I never would have imagined two years ago that we’d add planets!

One of our top priorities is to improve multiplayer. It is not only about network coding, but is also related to game logic optimizations. We are working on a method where we put all non-real-time game-logic in a secondary thread. For example, the computations for drilling/refinery/conveyors/oxygen won’t delay the main thread (which has to stay real-time). The reason is that players can always build crazily huge things which slow down the game (regardless of how much we optimize it), and if players perceive non-smooth movement, they think it’s a bug.

The development cycle of a game is complex, but its core idea does not differ from the development of the majority of products that are out on the market today. I will give you an example to understand this better. Let’s assume that you are producing a car. The first thing you do is assemble all necessary parts. After this phase is done, you take the car for a test drive. You identify any possible issues and then you fix them. After all issues are fixed and the car is functioning properly, you add the final touches – painting, polishing, etc. Then you are ready to start selling the car. The same principles apply to our games. Space Engineers is now in the phase where (nearly) all necessary parts have been assembled and we are ready to move to the major polishing and bug-fixing phase. This will probably be the longest and final bug-fixing period before the game is released in its final state.

Please note that the order of the list below is random and doesn’t reflect the priority that we give to each action. As I mentioned previously, our top-most priorities are to fix all annoying issues that make the game unplayable for many of you, improve the multiplayer, and polish the game.

SE roadmap
  • Multiplayer - polishing, checking design, lag, compensation<
  • Fix all sounds, 3D, arcade / realistic (ask programmers and our sound designer to make a list of all sounds used in the game and then have someone test them all – so that we don’t miss anything)
  • Voxels: data cell cache, storage, optimization, profiling voxel runtime
  • Render fixes (Ambient, environment map / lighting / reflections), occlusion query, ambient + backlight
  • Occlusion culling - blocks / voxels (speed up the rendering)
  • Disable object highlight on LCD screens (it’s annoying)
  • Optimization and fixing the loading screen, and checking if there are worlds that take forever to load while not properly informing the player
    • Fix loading screen issues (e.g. the wheel gets stuck at the end and I can hear the in-game sounds)
  • Red message box – make the background texture less transparent; it’s hard to read text on it
  • Conveyor system optimization
  • Drilling / mining optimization
  • New animation system / caching  (speed optimization) / other optimizations
    • Fix ugly animations
    • Add new animations – e.g. holding a weapon
    • Walking over small obstacles doesn't work - the player has to jump over them
    • Jumping and holding the forward-movement key doesn't result in a forward jump, and this doesn't feel right
  • Shooting and weapons
    • A few more new weapons
    • We need much better animations, holding weapons, ammo reload
    • In general, we need a basic FPS experience
  • "saving please wait" - hide this overlay text and do saving asynchronously without bothering the player
  • Why does the game auto-save in multiplayer when I am the client and manual save isn't available?
  • Remembering removed trees on planets
  • Nvidia GameWorks – consider HBAO + Antialiasing (speed up)
  • SE Indication of hydrogen fuel
  • Spectator flash light / night vision
  • Object highlight – outline – finish – also in ME
  • Finish support for scenarios, mission scripts and sub-missions (will need for tutorials)
    • Better support for gradual tutorials (story-based tutorials), submissions
  • Finish building from cockpit
  • Rethink the way of respawning, respawn ships, landing ships, and rethink "mobile tools" (manual assembler – so player can respawn without a ship and still be able to start building)
  • Rag-doll + IK, bullet impact, falling, four legged...
  • Official persistent servers
  • Automated tests for our testers + buy dedicated computers where the game will run 24x7
  • Redo the GUI framework (this doesn’t mean changing graphics; it only means the underlying tech which has become very cluttered over time)
  • Game logic optimizations + oxygen (mostly for MP) + oxygen sensor
  • Add voxel material in survival
  • Improve tutorials
    • Reduce the usage of text panels, deliver the info to the player via context-sensitive screen hints
    • When I launch the first interactive tutorial, I see two things that I shouldn't see – the respawn screen and "you have been accepted to faction"
    • Quickstart will be our interactive tutorial, with minimum text, HUD sub-mission navigation. Its purpose will be to engage the player and not to explain everything that happens in the game.
    • After we add this new tutorial, remove the video tutorial message box
  • Development of Xbox One version

Medieval Engineers roadmap

In Medieval Engineers, things are a bit different from Space Engineers. The game will complete one year in Early Access very soon and many of the features that we planned to implement are already in the game - e.g. survival mode, castle siege mode, multiplayer, simple AI characters, and crafting. However, many of these features have various issues or the implementation is very rough – in a clear work-in-progress stage. The overall gameplay lacks a polished feeling – e.g. the first few minutes might feel very annoying for some players (myself included!), the controls and gameplay is not intuitive, there are weird animations, etc. These are the things we will improve first so we can then continue adding new elements.

Please note that the order of the below list is random and doesn’t reflect the priority that we give each action.

ME roadmap
  • Add planets to ME - this will unify the technology in our games and make future improvements easier
  • Animation polishing
  • Inventory size rebalance
  • Character stats rebalance
  • Multiplayer fixes and polishing
  • Polish the in-game screens
  • Fix all sounds, 3D (ask programmers and our sound designer to make a list of all sounds used in the game and then have someone test them all – so that we don’t miss anything)
  • Combat system
  • AI changes, fixes, simplification
  • Building on a grid
  • Large grid construction site
  • Small grid construction site
  • Rethink if the respawn cart is necessary - why can't the player respawn in a normal way?
  • Testing scenarios for DEV
  • Tool durability, tool damage
  • New animals – e.g. wolves, bears, etc.
  • Fix Z-fighting
  • Door / window blocks
  • Gate blocks
  • Mechanical blocks
  • Redo the manipulation tool, remove it from the toolbar, add it to the context-sensitive action key (e.g. T), disable physics while the player is holding the item
  • Faction system
  • Claim of an area
  • Support to add voxels in survival
  • Area inventories – remove this feature (players should not have access to the inventories / items that are not in the direct vicinity or those that they are not interacting with directly)
  • Regrowing trees / bushes
  • New maps / worlds
  • More voxel materials such as iron, sand stone, etc.
  • More multi-blocks
  • More compound block combinations
  • Specialized workshops
  • Specialized furnaces

VRAGE / both games

  • Add/build new blocks/grids – finish the redesign – static, dynamic; small, large; creative, survival, construction sites
  • Multiplayer server optimizations (read the second paragraph under the Space Engineers roadmap section for a more detailed analysis)
  • Falling in 1g (especially in SE) doesn’t feel like 1g – the falling is way too slow; this was caused by changes in physics due to the Moon gravity, but the result is not good (yes, we want higher jumps on the Moon but we also want “normal” jumps/falling on Earth)
  • Finish transition to PBR (physically based rendering) and DX11, all models and textures needs to be checked
PBR example images
  • Redesign and simplify the key and mouse controls and GUI, check F1 help screen, left and right mouse click - try to do things with as few keys as possible by adding context-sensitive commands, get it to a stage when we don’t need to show 5-7 lines of default screen hints
  • Fix the 3rd person aim-point; first-person is ok
  • First-person movement and camera – the experience needs to improve, since now it feels all wrong
  • When pressing ESC while playing single-player (menu screen), the game doesn’t pause (and that’s just weird)
  • Proper sound when the character is running on armour blocks – players don't hear metallic steps
    • need to check all sounds in both games
  • Faster executable loading - when I installed the game on a new computer and launched it from Steam, I could only see a black screen and game mouse cursor and listen to game music for about 15 seconds; I don't understand what the game is doing during this time before the main menu – trying to upset me?
  • Particles fix
    • Consider Nvidia Gameworks / GPU particle
    • Editor
    • Rendering, especially DX11
    • Fix individual particles in each game and keep the low number of billboards and pixel overdraw
    • Programmer – make a list of all particle effects in the game
    • Artist – make a list of all particle effects in the game
    • Then match these lists, so there’s no unfixed particle, and we’re not fixing a particle that’s not used in the game
  • Faster world loading
    • Cache assets that don't change between worlds – when the game needs a voxel texture in one world and I exit to the main menu and load a new world, this texture can stay in memory - and the same applies for hundreds of other assets
    • In the main menu, the game should pre-load the most used assets, so that when a player loads a world, most of it is already loaded
    • Streaming assets, but make sure this won't break the game (lags, crashes, delays) when something suddenly jumps to the player (jump drive, spawned object, etc.)
    • Or if pre-loading isn’t a good option, then at least load assets asynchronously so the game doesn’t lag for a few hundred milliseconds every time new assets are needed
  • Refactor code (e.g. cube builder) – for two years we have been adding new blocks to this class, and it’s time for some spring cleaning
  • ME + SE player skills
  • In-game server admin tools (with GUI) – take the best from Midspace’s SE Toolbox and Tyrsis’ Server Extender; assume players want to become space masters
  • Main menu redesign
    • Think about how we can simplify it
    • Workshop button – move it somewhere else (e.g. Load), because it shows only world workshop items and not the entire workshop (blueprints, 3D models, etc)
  • Blueprints – simplify the user interface and GUI
  • Economy model (very simple)
  • Camera shake (e.g. when near explosion, when hit by a larger object, when shooting, etc)
  • Analyse the player stats and see where people get stuck, where they have problems, if tutorials are actually helping them or not, what changes in game design can prolong their game time (by making the game more intuitive and better)

Additional polishing and bug-fixing ideas will appear during my twitch gameplay sessions . If you think I missed something, please send it directly to me: marek.rosa@keenswh.com (Please report only the "annoying stuff", not wishes for new features/blocks. Thanks!)
Also, please keep reporting bugs and other issues on our forums (add links).

This year is going to be a very busy and challenging one for all of our teams. I am really looking forward to it!

Additionally, we have decided to run a live-stream tomorrow Friday, January 15th at 7pm CET on our Twitch channel, where, together with our lead game designers and a few of our closest YouTubers, I will be answering your questions and providing more details about the roadmap. Please start preparing your questions!

---------
EDIT: Thanks to everyone for their comments and emails -- it's "fun" to go through hundreds of emails...Haha :-) I keep replying to you as I process the emails. Thanks again!
---------

Marek Rosa
CEO, CTO & Founder
Keen Software House, GoodAI
:-)

---
For further updates, keep reading my blog: http://blog.marekrosa.org/ or find me on Twitter: @marek_rosa

Follow Space Engineers and Medieval Engineers on social media:
Space Engineers on Facebook: https://www.facebook.com/SpaceEngineers
Space Engineers on Twitter: https://twitter.com/SpaceEngineersG
Medieval Engineers on Facebook: https://www.facebook.com/MedievalEngineers
Medieval Engineers on Twitter: https://twitter.com/MedievalEng