Triton Updates

So, it’s about over a month into 2016. I think Jay said he’d be getting back to Triton sometime this year. Is there an ETA on when Blight becomes stable enough to warrant his attention here again? I confess to be a triton purist, preferring AI rebellions to the undead, and my Galaxian slugs and Anurians to trolls and elves. Regardless, I’m aware that taking care of both games and fixing routine stuff alone must be pretty time-consuming, so I apologize for my selfish lust for Triton pampering.

With that said, Jay has mentioned he has a list for stuff he intends to eventually do in Triton. Some of which include: adding the coveted original NP avatars and lost Triton ones :heart_eyes_cat: , and some new warp gate features that may change the dynamics of their importance/tactical use :kissing: .

That said, while I clearly have my biases, I was wandering what Jay’s personal list includes, and why he feels these future things on the top of his to-do list will benefit us galactic megalomaniac dictators the most. :smirk_cat:

Thanks for a reminder that we are a bit overdue for an update.

Late last year I did launch into the next phase for NP. It’s a bit of a long story but I will try to summarise so that those who are intrested can be kept in the loop.

TLDR: First priority is an advanced AI, but I don’t want it running on Google App Engine or Python so have been doing a bunch of technology research and planning.

  1. I don’t want to write any more Python code for NP. Python is my favorite language, without a doubt, and I would love continue to expand on my Python code base, but just because I like it is not really enough of a reason for me to continue to use it.
  • Its slow. Very slow. Node.js can be 5-10 or even 100’s of times faster. When I have an advanced AI, instead of needing 10 servers to run it, I can do it on 1. Right now the NP AI is limited by speed.

  • When I have a really awesome AI for NP that will plot and scheme with you, I would like to have some kind of single player game. This means I will want an off-line version, and the server should run alongside the interface. The interface is all JavaScript - I think the AI and the server game code probably should be as well.

  1. Given the decision to move away from Python I need to decide what I want to use instead.
  • my first instinct was Node.js so I spend some time in December evaluating various Node.js Hosts and working out how to write a node server. I have some code working, but I found that I just don’t really like how Node.js people do things. There are a million different ways to do everything, and none of it seems really all that good. I would much prefer an ecosystem where there was just “one true way” so I didn’t have to waste time evaluating 3 of 4 libraries for every single thing.

  • I’d like to spend some more time evaluating some other options. I’ve heard great things about HAXE that can be compiled to Javascript. So perhaps that would be a better option.

If your interested in hearing more rant just let me know


So an AI is definitely on the number one spot. I don’t know code, though sometimes I wish I did so I could keep up with the times. I do see how the slowness of the AI could be a problem, or game code in general being slow.

Jay, you could take a look at Pyjs which translates Python to readable JavaScript. This could transition your brain out of Python into a JavaScript thinking process. If there are any problems, then maybe some slight tweaks or adjustments may be needed for debugging.

Afterwards, you could scrub your new JS code to improve its efficiencies for NP2. The transpiler would not know to do that for you.

Node.js is not JS, so as you learn more about Node.js, you could convert some parts of your new JS code into Node.js.

I do not know whether this would actually be helpful.

Here is a list of languages that transpiles to JS. There is whole section of Python. Node.js is listed 4 times. HAXE is listed 3 times. Maybe there are other ideas available here.

Perhaps you can use Cython, as far as I know, you basically just add type declarations to your python code, and it increases performance. (it’s probably not that simple, I’ve had limited experience with Python, and some experience with C)

Cython won’t help me run the code in the browsers. I think the nice thing about Haxe is that is designed to have all the different targets. It seems to be its major selling point.

Does this mean the AI disposition system will disappear, or just be built upon?

Personally, I’m itching for this: Define neutral stars when creating custom maps - do you think you’ll get around to this in 2016?

If your interested in hearing more rant just let me know

I’d love to hear more about your plans for NP.

1 Like

I completely agree that upgrading the AI should be your top priority. That will address the key shortcomings of the game, plus attract a whole new audience of single gamers. Glad to hear you’re on the case, Jay. Good luck!

I’m a Golang fanboy myself :slight_smile:

If you’re looking for speed, one way to do things, and a simple binary that can be run anywhere then maybe you should check it out.

I’ve been following Go very closely because I think the philosophy of the language sounds exactly right for me.

The only thing that is holding me back from jumping on it is the idea of having one codebase that can be run on both the server and client. (The client being a browser)

Jay, you could take a look at Asm.js .
Since this is not a high level language, you will probably need to write some custom functions to bridge the capabilities gap from Python, maybe even re-write some modules.

Lower level languages can be more time consuming development-wise.

There are many opinions out there on the Internet. Transition steps might include PyPy or CPython .

Your future vision for NP2 AI would probably be easier to develop in a high level language.
I do not know if there is a straight easy way to transpile that to a faster lower level language.

If I were using Asm.js , I would want my eye balls directly on the code to make sure it is running in a non-wasteful manner. Takes time.

I have programmed in low level MS ASM and also Commodore 64 Assembly before. These are great fun if you get it right, AND SCREAMING FAST !!! So blink, and you miss it. ( Actually there is not enough time to scream, because it is so fast. )

This is the first time that I have read about MEAN . I do not know how widespread it is supported.

I have read about LAMP and XAMPP .
XAMPP can be configured to run bundled as a Portable App .

Jay, whatever other language solution stacks that you choose, hopefully it is widely supported so NP2 and Blight can thrive a long time.

There are two problems with MEAN. The M and the A part.

I’m looking at Node, Express, Postgres, and probably Redis for caching.

after a very long time without NP it’s time for me to come back…

What is the current Status of your AI-Project Jay.

Are you interested in starting a AI-War-Challenge?
People write AI and let them play against each other in Tournaments.
Maybe that can also inspire you ?

It would be AWESOME if Jay could add Mirrored Map Creation into Triton;
here is the thread from two years ago.

This was done when there was some 1v1 tournaments - he said it didn’t quite work correctly all the time, but maybe consider enabling this feature even if it is a little buggy.

@JayKyburz Have you considered trying to hook up some kind of genetic algorithm to the game to train the AI? I bet you could probably find a library that would work almost out of the box, since the actions a player can take are few and it’s easy to score success (wind up with the most stars).

Interestingly … I wrote a book chapter on using Evolutionary Algorithms in games a while back! ‪Penny Sweetser Kyburz‬ - ‪Google Scholar‬

I delegate this task to Penny.

@IHG-BlightedPea That’s really neat! I’ve always wanted to have some excuse to mess around with those. I wonder if you could actually get an AI to successfully play the game that way. It would be awesome if some strain of AI found some wacky super-successful strategy that didn’t look like it would work but totally does :slight_smile: