Euflorium: The Eufloria Community

Eufloria => Eufloria Classic => Eufloria Classic Mods => Topic started by: Lost Seedling on November 30, 2018, 09:32:58 AM

Title: New Files Update
Post by: Lost Seedling on November 30, 2018, 09:32:58 AM

Eclipse-B Update:
Attached below is the latest version of Eclipse-B. The list of updates and new features is too long to list, but one update is particularly noteworthy.
I’ve always been dissatisfied with the send-distance adjustment algorithm in the game. In randomly-generated maps, too many one-way connections were formed or asteroids were moved out of the desired location. I finally figured out a way to ensure maps are contiguously connected without having to move the asteroids. The only drawback is that it takes considerable time to make the calculations, but that is a small price to pay for the flexibility in map-creation it allows.
I think Eclipse-B has about reached the limit for program memory so no more major updates will be forthcoming.

Text String Centering Code:
Another frustration has always been the problem aligning text on-the-fly. Because individual letters each have their own size, it is nearly impossible to determine how to center text or bound the text with graphics. This function when called will return the length of whatever text is put into it, allowing you to know exactly how much space the text string will take up and controlling where it starts, ends, or centers at any given scale.

Trackit Code:
For maps with moving asteroids, this will create a trail showing where the asteroids have been. It makes for very interesting results. Picture is from the "Recursion" map by dragoonreas using a modified version of Trackit Code. The attached code will only show the trail of an asteroid once you have placed the cursor over it.

Debug Text Utility:
I got very tired of typing out the DrawText command repeatedly while debugging various maps and functions. I finally decided to write a dedicated function that would make displaying values that I wanted to monitor on the screen easy and convenient. This was quite simple for a handful of values, but as the number increased into the hundreds it was clear I needed to make it more complex and make the appearance of the text easily modified in real-time. This turned out to be much more involved and complicated than expected, but I am very happy with the end result. I’ve included both a demo and the code in files below.

This code (Eclipse-B has a tailored version) will show you how many seedlings in an Empire are actually engaged in battle as well as how many asteroids are under attack or in danger of being conquered by the enemy. Rather than just looking at the total numbers, I find this information to be particularly useful in monitoring the tide of battle.
Finally, I realize the chance of anyone using any of these files is miniscule, but I wanted to get them out before the new game is released- whenever that is! Any questions or problems with these files please ask.

12/02/18- Made a tiny change in Mutant AI behavior to better perform in new map type included in Eclipse-B update. Updated to version 3.1. This change will result in under-performance of Mutant AI in certain rare map configurations.
Title: Re: New Files Update
Post by: Bonobo on February 26, 2019, 07:14:43 AM
Hello @Lost Seedling, awesome to see that somebody still does something here … looks cool, I might want to try it out … do I need anything else that “Eclipse B v3.1.lua” for playing it or do I need to install the other stuff also, and if, then where?

Title: Re: New Files Update
Post by: Lost Seedling on February 26, 2019, 10:00:24 AM
Nope, just run Eclipse B. If you have any questions about anything please ask. There are quite a few extra and hidden features included that may not be obvious at first, if ever. Although you have the option of playing as one of the factions, Eclipse B is mainly useful for observing AI wars. I have no idea if anyone else has actually installed and played it, so if you do please let me know if it works on your computer. I feel like I kind've stretched the memory capacity of the game to the limit sometimes with this one. In fact, I had to scale it back a number of times to get it to run with only rare and occasional hiccups on my machine.
Title: Re: New Files Update
Post by: Aino on March 23, 2019, 11:44:19 PM
Really awesome to see things still being developed here, I might have to download the game again to check this out :)

Edit: Still with the AI battles I see :D
Guess I'll have to come up with something soon then, and beat the poop out of every other AI here :)
Title: Re: New Files Update
Post by: Lost Seedling on March 26, 2019, 05:58:43 AM
I wish you WOULD create a superior AI! Eclipse-B is perfect for testing it out. Maybe then Mihhaelo will finish his AI, Pilchard will make his AI, Annikk will update his AI, and I will finally finish Mutant AI. Eh-who am I kidding? If you make a new AI I'll definitely add it to the AI roster.

Back up your files, though. We don't want a repeat of your last disaster!

So what are you up to these days? I figure you must have started your own software-development company or something.
Title: Re: New Files Update
Post by: Aino on March 26, 2019, 09:15:55 PM
Wish I was that creative, starting my own company with an idea that would be successful :)

I'm currently studying to become an engineer: Automation. I have a little over a year left of the study and then I'll officially become an engineer, but I don't think my future truly lies with engineering work. I'm hope I'll end up with a software developer job after my bachelor, which I guess is slowly becoming my dream job! :)
Besides my studies, I'm also working with C# as a hobby. Making my own little game engine just for fun is quite challenging, and working on it always reminds me I still have quite a lot to learn.

Already started with some basic setup code for the AI, just need to figure out it's behaviour and write the code. I'm also curious if Eufloria allows for multi threading, would be awesome to put that pesky and heavy neighbour checking work on another thread, alleviating the stress on the main game loop. I guess I'll have to look into it, and thread safety while I'm at it. I'll take on this project with a little more planning than previous projects though, so it might take some time.
I will most definitively not lose this one though, learning from your mistakes has that curious effect. :D

Edit: Worked on the AI some more today, looking promising. I'm weirded out by the fact that I actually don't know why the AI does what it does... It does what I expect, but currently I haven't added any sort of prioritization of planting trees or assembling to attack, but it does so anyways. I did check if the default AI is to blame, and it isn't. This is good I think, because that means I somehow made a pretty good foundation for the AI. It does have SOME A LOT of irrational behaviour that I hope to iron out soon; maybe the release will be sooner than expected? :D

Edit 2: Working on the AI some more I have finally made it behave as I expect it should. This is awesome, now to add some behaviours that is missing (defending and attacking), and see if it can beat MAI :)

Edit 3: I figure I can add a to-do list in this post too, so everyone curious can keep track of the progress:
Code: [Select]
- Basic behaviour, like moving seedlings and exploring.  (done)
- Plant trees (done)
- Use one slot on extremely good asteroids for defense trees (not done, don't know if this is a great idea or not; losing out on good seedlings)
- Characterized by being the best asteroid in the empire.
- Defend properly ( 80% done :) )
- Attack properly
- Flowers:
- Plant flowers on the best asteroids in the empire
- Plant flowers on defense trees first
- Plant flowers on dyson trees second
- Mines
- Deploy mines on friendly threatened asteroids
- If no threatened asteroids, use for offensive purposes

I think that covers the behaviours the AI should exhibit, I might have missed a few smaller points... :)

Edit 4: For the first time since starting this, the new AI beat my older one... It's rather curious, and it's because of an exploit in the older AI. I consider it a win nonetheless, considering I'm not done implementing any sort of offensive behaviour as of yet (the AI does attack, but it doesn't have any code directly telling it to be on the offensive). It will be interesting to see what happens once I add behaviour that makes it take more offensive actions :)

Oh, and it's really fun to see just how small adjustments in the mathematical formulas change the behaviour. It's not radical changes, but one adjustment in one formula made the AI go from loser to winner against MAI :D
- Note: this is a double-edged sword, one change can cripple the AI as much as it can boost it, but developing it from the ground up has it's benefits of making me see where some pitfalls are though :)
Title: Re: New Files Update
Post by: Lost Seedling on March 31, 2019, 08:44:02 AM
Aino- glad to hear you’re almost done with your schooling. Maybe you’ll eventually find work developing artificial intelligence for self-driving cars or flying taxis- a possible future boom-industry. AI certainly seems like a sector of technology still with potential for enormous growth and opportunity. How would you like to work for a company like Boston Dynamics? (

Great stuff on the new Eufloria AI! I’ve got 9256 hours logged now in Eufloria, most of which is observing the various AI’s in action. Obviously, it is a source of endless fascination for me and I’ve learned a great deal about the strengths and weaknesses in Infected, Merchant, and Mutant and can usually predict which will win just by looking at the initial map configuration.
When I was working on Mutant, I sometimes found it could soundly beat Infected, but not Merchant. Or, with different optimization it could often defeat Merchant, but not Infected. They seemed to have nearly opposite strategies. Changing the many map options also had dramatic effects on the results. Because I tried to minimize Mutant’s drain on system resources, it means the AI is very slow to make decisions and take actions. This causes it to do poorly on maps with large numbers of asteroids or long send-distances.

Only by trying out many hundreds of different maps and configurations was I able to achieve a satisfactory win/lose ratio and at that point I stopped working on Mutant, despite some fatal flaws in its algorithms. I certainly would do things differently if I was starting again knowing what I know now!

Eclipse-B was an attempt to easily generate many different map scenarios to test the fitness of any AI combatants. Unfortunately the native Eufloria AI was not suitable to feature both because of its influence on other AI behaviors and the fact it was designed to intimidate and confuse human opponents and not the cold calculation of another AI. Simply put it was not competitive.

In some of the generated maps, I tried to minimize any positional advantage held by one opponent or another. However, I found the numbering system of the asteroids introduced an imbalance which can drastically influence the outcome of battle unfairly. To overcome this maps can be saved and replayed with the starting points reversed.

I’ll enjoy reading of your progress and can hardly wait to try out your new AI. Perhaps you might want to start a dedicated thread to its development. I hope you find Eclipse-B helpful in your testing.
Title: Re: New Files Update
Post by: Lost Seedling on May 28, 2019, 07:18:07 AM
Aino, did you give up already on the new AI? The silence is deafening!
Title: Re: New Files Update
Post by: Aino on May 28, 2019, 11:35:24 PM
Nope, encountered some problems with the logic in the AI, need to rethink my approach. The silence is because of exams, sorry... :)

To be clear; I want to finish the AI, but it's not a high priority in my life at the moment, I hope that's understandable...
Title: Re: New Files Update
Post by: Lost Seedling on May 29, 2019, 04:18:22 AM
Totally understandable. I'll soon be traveling for a while anyway so I'll check back in around November for an update. Good luck with the exams!
Title: Re: New Files Update
Post by: dragoonreas on August 01, 2019, 10:12:28 AM

Just catching up on new posts since my last visit.
Your Trackit screenshot of my "Recursion" map looks really cool @Lost Seedling!
It would be interesting to track the paths of asteroids using Annikk’s Gravity/Collision Engine (
Title: Re: New Files Update
Post by: Bonobo on August 01, 2019, 10:41:19 PM
Nice to see you also here, dragoonreas :)

Everybody pls see this post re:Eufloria RPG by sillytuna: “Eufloria lives” (
Title: Re: New Files Update
Post by: Lost Seedling on November 20, 2019, 10:20:45 AM
Hi dragoonreas,
Sorry for the late reply but I've been away for awhile.

It would be interesting to track the paths of asteroids using Annikk’s Gravity/Collision Engine.

I'll attach a copy of Annikk's Frontier map with the Trackit code already installed. You're correct- it's pretty cool to see how the asteroids move around throughout the game. Check it out. (Note: The Trackit code will start after a few seconds. Just place your mouse over an asteroid to view the track history.)