Dienstag, 29. Juni 2021

My journey for learning Unity3D AI begins ;)


So its begins, my journey to Unity3d AI and C# advance learning!!!

My current learning progress as gamedev experience:

YES i decided to spent whole July 2021 only on learning how AI can be implemented with help of Unity3D!!!

As company owner I have many responsibilities and I rarely take vocations and for me learning AI in 2021 is important!
This days I spent less and less time in coding and more in business formal negotiations (as it supposed to be)
As CEO of Orlovsky Consulting GbR I can  delegate the actual work to my consultants, still I insist to stay in the loop and informed about latest updates of clients projects.
We at Orlovsky Consulting GbR value intelligence very much and encourage all to learn new stuff and actually what motivates us and drive us.

So I have even my side project which is Sword of Earth 2500 a post apocalypses strategy game of humanity which rediscover and reconquering the planet Earth.
The games should feel like a clone of Sid Meier’s Alpha Centauri game , but it would have some modern stuff ;)

Will I learn Blender? Maybe

When the first playable version of SOE 2500 will be released? Well the project is pretty big and I don’t want to cut corners, it’s not main project at my company, but I consider , that one time i would be able to ship and  sell finished game via different distribution networks!

Now to the fun part!

Books to read and impressions after reading those books
(notice it would be updated from time to time) :

Artificial Intelligence with unity by Patrick Felicia : 

This book is rather short, but it shows actual “handwork” and give good example how to do it in Unity3D  the basic AI with following behavior: follows player character in a 3d world over different type of obstacles. This book describe only one case how to use simple ai implementation (almost no code involved)

Game A.I. Made Easy  Designing Agents With Examples in C# for Unity3D : 

Not typical Unity3d AI book, which you can find on the market. It goes deep into thinking process of design steps for creating very powerful and at the same time flexible AI.
This book actually shows some interesting patterns about how to do AI in very approachable way.
Then there interesting topic of how to deal with zones (areas which must be observed by the ai agent object)
Author of this book use understandable language and even goes step by step in show actual example in Unity3D. The presented code for AI examples is interesting, but feels sometimes way to simplistic.
Additionally this books covers topics like programming of bullet and explains how path finding works.
General impression about this book, I think the author have goal for AI of first person shooter and in my case the information from this book only partially helpful.
Honorable mentions machine learning, adaptive AI vs cheating AI recommendations.

Unity 4.x Game AI Programming Learn and implement game AI in Unity3D  

Here you would find some practical examples for FSM, A* based AI.
Authors providing example for finite state machine: a tank game Unity3d project.
Discuss little bit of probability.
In this book you will find example of slot machine an example for probability implementation.
Very interesting example of AI by creating a flock of birds ;)
Authors explain how to create and “bake” the Navigation Mesh.
In the last chapter a working example: demo of SFM based AI is presented.

AI for game developers:  
C++ knowledge is required if you wish to grasp and understand details of this book.
Author describes how to write smart chase algorithm’s.

Reader of this book would find good explanation on vector programming.
This book describes flocking implementation.
You will find lots of code in this book.
This book consist long explanations of physics in games.
Furthermore you will find interesting approach for path finding.
Author discussing the breadcrumb path finding, Finite State Machines too.
The Author speaks of behavior and provides lots of code examples.
This book speak describes fight rules for simulation of game of fight. 
You will find a big chapter about very interesting topic which is neural network.
Summary: This feels like a reference book, you need to use this book on purpose, because each chapter of this book can be read independently, I missed the information what type of AI exist for strategy games.

Beginning Game AI with Unity: Authors of this book rely on Unity3D which is indeed good choice.
Unexpected, but this book includes introduction to vector math.
Example of how to move simple cube in Unity3D is interesting, but kind of boring.
The presented sourcecode feels unstructured.
Discuss bread first search as math approach for finding the shortest path  was refreshing and a lot of fun.
Summary: This book provides good example, about how to use Unity3D NavMash and path finding algos.

AI Techniques for Game Programming by Mat Buckland  

Hands on experience, but based on old tech.
Mentions low level windows programming , like GDI programming.
Authors present genetic Algorithms.
Discuss the genetics and physics (Mass, Force, Velocity, Length).
Explain how neuronal network works.
Overall impressions: this book consist only small bits of useful information about developing AI and you will find lots of C++ code. Some parts of the book have very academic nature.

Unity 2018 Artificial Intelligence Cookbook - Second Edition by Jorge Palacios 

This book have more straight approach, instead of speaking about theory, this book provides recipes with C# code include, some code is hard to read and the give explanations are not complete.
Using small code examples for achieving one particular goal. Really this book can be used for quick reference for finding a solution to a given problem, but this book don’t provide consideration of what type of disadvantages you get  if you use old code.
Have breadth  first search and deep first search, well those algo’s most times covered in the university during study for computer science degree, sure it can be applicable at some cases , but I found rather less impact in my case.
There longer explanation of finite state machine.
In this book you will find many other topics, but I must say it wasn’t so interesting and applicable to my case for developing of AI for strategy game.

Fundamentals of Strategy Game Design by Ernest Adams .

Speaks more in general terms, I think it’s more like catalogue of different types of strategy games.
I think the books just go through different aspects of strategy games, there is not deep explanation how to make one! The author mentions here and there some important features of strategy games, but doesn’t go deep enough.
Interesting topic about neural nets , still most times this book don’t deliver specific solution how to go about design of turn based games.

Seductive Interaction Design Creating Playful, Fun, and Effective User Experiences 
Matter by Stephen P. Anderson 

Well this has nothing to do with AI, but if you think of behavior of AI in pc game for me it make sense, that knowing about the behavior of player  make sense.

I think I find this book interesting from the point of interaction with player, in terms of player expectation this is valuable. This books discuss what someone should think about the UI design. This book discusses the difference of what a free user and pay user gets on enterprise websites. I found interesting the part about user experience during payment process. Author present some example from actual website and give explanation how they do business. 

Unity 5.x Game AI Programming Cookbook by Jorge Palacios 

I think I already read similar book. The example of custom mash was indeed interesting, steering simulation and etc. Book of recipes and quick solutions.

Practical Game AI Programming by Micael DaGraca 

This book is interesting and explanations are actually good.
The author discuss topic of firing a bullet and and the way how this event was risen.
Provides an example how a female character can be simulated with AI.
This book explains what to consider, when you develop NPC behavior.
Another topic animation behaviors was interesting too.
I found interesting how the challenge with transitions was solved.
The code which you will find in this book is well structured and easy to read.
The author of this book discusses football AI, which by any means pretty complex and challenging.
One of the topic which I liked was about collision avoidance.

Artificial intelligence for games Ian Millington John funge  

This book have more academic nature, but it’s well-structured then others.
There lots of interesting diagrams about how to structure the AI model.
I like the way how authors go about discussing of AI in practice.
The presented code is easy to read, the most weight of this book in abstract descriptions.
This book covers topics like steering behavior , projectile physics, path finding, A*, Dijkstra,
decision making trees, fuzzy logic, Turn-Based Strategy Games logic.
Finally author discuss different type of programming languages , which you can use for creating the game.
This book discuss strategic AI , which my most valuable  topic to me. Overall the book provides in deep discussion about AI, sure some topics way to bloated, but anyways this is the best book about AI in games so far. Still if you looking for quick solution without big discussion , then use previously mentioned books.

Game Programming Patterns by Robert Nystrom 

this is has nothing to do with AI, but it provide a “building parts” for building some parts of AI.
The code presented in this book is C++, which is ok.
The author of the book presents patterns in reference to game development.
Some examples are good and some plain theoretical ones, which is ok.
I found interesting the part how author describe game loops usage in reference to game engine.
Book has very difficult part of assembly programming, which is hard to understand.
Speaks of scripting languages, do or don’t decision, in my opinion if it can improve the workflow sure do it, otherwise don’t.
The design patterns in this book sometimes feels blown out of proportion, I think because author implementations are in C++.
What I dislike sometimes author tries to generalize things claiming that most cases you can
use array, I say if you care about order of data you need to use some sort of collection.
Programming in C++ it’s like working with precision laser, the author of this book give clear explanation why sometime optimization of code would not help, because this would potential will cause slow execution which can have something with the cache architecture of the cpu where your game is running.
Memory allocation problems and speak about managing particles.
Overall it feels kind of rushed book:
 I expected to see more diagrams , the code sure is interesting , but in my opinion it was optional. Sometime I was lost the train of thought of the book author.
Final conclusion: this is a reference book for quick ideas about some challenges in gamedev, probably it make sense to use it, if you plan to write own game engine.

Programming game AI by Example 

Book author presents math and physics equations which is works as base for further explanation of AI implementations, I find it useful and great.
The presented in the book simple FSM example is interesting and give your idea about that how FSM works.
The majority of this book is C++ code, for me it’s not enough and for such case you will find some of the diagrams in this book.
Author writes about steering behaviors in reference to a simulation of soccer game.
You will find interesting thinking about how to simulate a soccer game.
I hope, that this book was used by the developers of EA FIFA game ;)
This book have a whole chapter about graphs and theirs relation to AI.
All code examples presented in this book were written in C++ language.
Wow Dijkstra algo, I didn’t seeing this algo long time ago and find the presented example in this book kind of over the board example.
Then this book covers scripting language LUA and tries to introduce it, but at that point my interest to read further was kind of low so I didn’t go far deep into it.
Overall not bad book, but still in regards of AI for strategy games its not helping, still I pick one or two tricks from this book which is good.

Clean Code in C Refactor your legacy C code base and improve application performance by applying best practices by Jason Alls 

Indeed this is a very interesting book, you will see lots of  code and experience the thinking process of the author regarding design patterns and threads, functional programming and etc.
I find in particular interesting the usage of LINQ and API design, and the introduction into well-defined software boundaries.
The mentioning of abbreviations was great too an I like DRY, YAGNI, KISS, SOLID.
Then you will find in this book some debug and refactoring techniques.
Author mentions for me very important topic like the cross-cutting concerns.
Finally I find useful the stuff about code metrics and code smells.
Finally I 100% agree that all programmers most times working in legacy projects, the Greenfield projects only small amount (need example? World of Warcraft), today we have software almost for any possible problem of human society and programmers responsibility for what they are doing is much higher than it was in the past before.
I highly recommend this book to any C# developer, read it and try out the experience alone worth it!

Unity 5  writing cleaner code:
Good principles and common sense, I liked the parts: Delegate, Eventsystem and be reasonable and don’t over engineer the code.

Conclusion after reading so many books on Unity3D AI:  A*, Finite Machine, Decision trees this what most times I  notice in all those books which I have read. C# is very similar to Java, but it has own quirks and specialties , but find it as good choice for game programming, because then you wouldn’t deal with low level programming, some people would disagree and say that C++ way efficient than all other game programming languages and maybe they right, but in terms of time I rather spent my time on working on game logic and creating actual game , rather taking the hard and very difficult road of creating of own engine. Another interesting observation during reading of those books, some of them were very abstract in nature I kind of wonder how its really helpful to actual game developer, because it isn’t. So this is it a complete list of Unity3D AI books , some of the knowledge must be rejuvenated, but know you know what to look for in those books!

Why requirements engineering is still valuable in 2021 and beyond?

As software consultant I speak with German companies on daily routine 

and I always fascinated by the challenge in the projects and many times I being asked by company owner‘s, why my company Orlovsky Consulting GbR can’t just write code even if the requirement are not formal and or not yet defined or will be defined at the later point.

The idea to write code without proper requirements analysis is very foreign to me and my team and I consider such projects as potential failed projects.

For example in the report of the StandishGroup International you can see following diagrams:

It is obvious, that you need to analyze project before, during and after releasing it!
Furthermore the amount of developers is not essential for success of the software project/s and this statement should not considered as another consultant tricks, but it correspond to what I saw and experienced firsthand!


In my favorite book  “The mythical  man-month”

, you will find statement like following: „Adding Human Resources to a late software project makes it later“
This book is not new, I always find it strange and ironic that so many senior developers and managers just not aware of it.

Our IT industry is not so old

but we are not children or teenagers anymore, we adults and should behave like ones and take full responsibility for our work and decisions which we make.
Some company owners would respond to my statements, well we can’t do anything about our deadlines and they are fixed (due to government agreements and contracts and previous agreements) .
Sure, I understand this, but do you plan to ship sh***t or you plan to do something great and the best possible job?

Most times I get the usual answer like:

"- well we can’t do anything about our deadlines and they are fixed (due to government agreements and contracts and previous agreements) ."
Sure, I understand this, but do you plan to ship sh***t or you plan to do something great and the best possible job?

Then the company owners say:

Well we can’t do jack sh** about this, thank you for your offer , you will hear from us! (Then I never hear anything from them ;) )

Really all is in changing? perhaps we should reconsider, but I don’t think that our major client would agree on new terms! (Then I receive a formal rejection)

Here is a big problem, many German companies are not ready for the change, they usually say we use agile or mix with Kanban and scrum, but in my opinion it goes nowhere,

because the real problem is: not right prediction and estimate on delivery of final product, here I recommend to be honest to main client and say that obviously we would not able to deliver all previously negotiated features and let us negotiate a new delivery pipeline where your feature request’s would be delivered in the predictable and honest and accurate manner.

I strongly recommend and advise companies to take action and revaluate your IT software projects and business models , something is not right and it must be fixed.

Requirements engineering would help, because it allow to recognize following:

1.     What are actual functional and non-functional requirements ?

2.     What are the corner conditions of the requirements?

3.     Because of formal requirements, they would be recognized by all team members you will be able to validate them, by that I mean to validate trough all involved stockholders, product owners and team members.

4.     If requirements engineering done right, you will be able to catch the misconceptions  and misunderstanding sooner than later.

5.     The developers would spend less time in understanding and implementing of requirements and even less in debugging.

6.     Requirements help to create enough documentation for your project and it is good feeling when you can read a requirement and able to repeat the test as user and validate that was implemented as expected

If you use agile and wish to have such state of project,

you must be ready for the change, some people afraid of the change, because they are used to bad working environment and constant stress and some people just only  care about to push enough code that the final product wouldn’t crash during user experience. Such people usually work to the senior architect position and leave company or deprecate the project just because it does not suits current business needs ;)

Source: Scaling Software Agility Best Practices for Large Enterprises by Dean Leffingwell

If you consider all of things which I mentioned and referenced here, you should think and make honest estimation about what you’re really getting from your current business process, if you not sure what to do next, contact external consultants  or create a dedicated team for project analysis , but do anything to change the direction of your company!
I really hope, that you as a decision maker take all options in count, because it’s always bad when you know that project would fail and done nothing to fix it, so find a solution and fix it!

(Hint, Hint: use requirements engineering)

Dienstag, 1. Juni 2021

Newsletter of Orlovsky Consulting GbR Ausgabe 2021 Monat: Juni

 Newsletter of Orlovsky Consulting GbR Ausgabe 2021 Monat: Juni

The Frustrated Scrum Master — When all the Effort Leads Nowhere
Kommentar:  Es ist sehr interessant zu beobachten, das manche Scrum Master die Herausforderungen bei den Projekten nicht verstehen und einfach so diesen Vorgehnsmodell durchführen und natürlich man bekommt eine Frustration , weil keiner will an die Regeln halten. In diesem Fall mein Rat, zuerst die Unterstützung und die Einverständnis von den Team holen und erst danach die Manager überzeugen.

Azure vs. AWS Comparison: Is Azure Really Catching Up?
Kommentar:  Sehr Interessante  Analyse , hier wird ein Vergleich von Quartalsgewinne zwischen Azure und AWS gemacht. Die Autorin behauptet, dass AWS nach wie vor ein Cloud leader bei den Gewinnen ist, warum ist es so? Viele Firmen anscheinend sind sehr stark von bestimmten AWS Lösungen abhängig und bisher kein Cloud Anbieter vergleich gemacht haben, aber meiner Meinung nach , dass ist es eigentlich der Vorteil von Cloud, man kann den Cloud Wettbewerb nutzen und immer günstigere Preise bekommen.

Warum Agilität über Projekte hinausgehen muss
Kommentar: Klar die Veränderungen die wir heutzutage in den Betrieben erleben sind gigantische und als Folge jeder Veränderung , dass die Produktivität sink. Es ist nicht zu vermeiden, die Menschen müssen sich neu orientieren und mehr Verantwortlichkeiten als vorher übernehmen zu könne, für manche Altersgruppen scheint es einfach zu übertrieben sein , weil was die vorher gemacht haben hat immer funktioniert jedoch denen fehlt die Verständnis über die Geschäftsprozesse, wenn eine Änderung ansteht , dann erwartet meistens die Unternehmensführung die positive Ergebnisse , besonders schwierig sind es die Veränderungen in Großunternehmen, ein Wunder , dass z.B bei Commerzbank alles noch funktioniert. Gutes Beispiel mit Ingdiba, aber die hatten dieses neues Arbeitskultur schon seit längerer Zeit und für die war es überhaupt keine Herausforderung , weil die Mitarbeiter dort dazu bereit waren.

„Ich habe keine Lust mehr auf den Job“ – Was tun?
Die Pandemie fördert seine „Tribute“ und viele Menschen fragen nach Sinn fragen. Es ist durchaus berechtigt und sehr wichtig, weil eine hohe Motivation bei der Arbeit nicht nur bessere Ergebnisse bringt , sondern stärkt die Mannschaft bei schwierigen Phasen. Wir Orlovsky Consulting Gbr haben eine Arbeitsgemeinschaft wie die Spartaner, jeder bei uns kann jeden ersetzen und die interne Schulungen gelten für alle welche zu den Unternehmen gehören, natürlich auch bei uns gibt es Phasen wo viel los ist, aber wir haben gelernt Nein und Ja angemessen zu sagen und unsere Kunden haben dafür volles Verständnis.
Was kann Ich bei so einer Situation empfehlen? Fragen Sie sich was ist Ihre Motivation in die Arbeit zu gehen ? Geld ist wirklich wichtig, aber auch um welchen Preis?
Wenn Sie über die Arbeit auch in der Freizeit nachdenken, dann es ist eindeutig an der Zeit sich umzudenken und neu zu orientieren, weil auf Dauer Ihre aktuelle Arbeit Ihnen Gesundheitlich schaden wird.

The art of unit testing with examples in C#
Ich habe ein Buch über Nunit gelesen, das ist eine Framework zu Test von C# Quellcode, sehr nützlich und einfach zu bedienen, wenn Sie als Entwickler in C# es verwenden würden dann profitieren Sie von stabilen Software und raschen validen Ergebnissen von den Verarbeiteten Daten.

Softwarequalität – der Schlüssel zur vierten industriellen Revolution
Kommentar: Softwarequalität ist nicht zu unterschätzen, es bringt die Merkmale welche für einen oder mehrere Softwareprodukte sehr kritisch ist, manche Firmen sagen wir haben keine Zeit , unsere Kunde sind schon darauf geschult nur die richtige Eingabe zu machen, aber ein Mensch kann ein Fehler absichtlich oder unabsichtlich produzieren (z.B durch Konzentrationsverlust) , aus diesen Gründen es ist eine Aufgabe von uns den Entwickler immer sehr hohe qualitative Software zu bauen, so dass der Kunde unter keinen Umständen die Schwierigkeiten bei der Bedienung erlebt, klar nur in seltenen Fällen werden die Deadlines eingehalten und die Unit Test und Testen im allgemeinen hilft die Qualität des Produktes zu kontrollieren und so die Risiko zu minimieren.


Blog readers favorites