Amoriax - tactical game based on Roman board games

Started by zxretrosoft, March 01, 2024, 08:27:38

Previous topic - Next topic

zxretrosoft

Hello friends!

I would like to introduce you to Amoriax, which I finally finished after a year in AGK  ??? ::)
It is a tactical game based on ancient Roman board games. These games were built on the principle of simplicity - they usually had plain stones with some movement options, yet there was magical logic behind them. And few rules.

4 rules

● the game piece can only be moved to the last possible space in the chosen direction
● outside the marked central area, you can drag a stone into the letter L (just like a knight in chess)
● a playing piece can drag diagonally from a complete corner to the opposite corner
● the red stone is common to both players and can be drawn by anyone

The goal of the game is to dominate the center field with the crown.
Stones are not discarded, they are only moved where there is an empty space.

 You can download the game for PC (direct link, ZIP format):
https://www.instaluj.cz/amoriax/download

Browser version:
https://zxretrosoft.itch.io/amoriax

I hope, you will like it. Enjoy 8)  Thank you for your support!


Xerra

I had a play with the browser version of this earlier and it's a neat little game. Well done creating it.

Won on my first game too /flex :)
M2 Pro Mac mini - 16GB 512 SSD
ACER Nitro 5 15.6" Gaming Laptop - Intel® Core™ i7, RTX 3050, 1 TB SSD
Vic 20 - 3.5k 1mhz 6502

Latest game - https://xerra.itch.io/Gridrunner
Blog: http://xerra.co.uk
Itch.IO: https://xerra.itch.io/

Qube

Quote from: Xerra on March 03, 2024, 20:49:58I had a play with the browser version of this earlier and it's a neat little game. Well done creating it.

Won on my first game too /flex :)
Ditto. Fun little game, well done.

We can flex together as I also won my first game :))
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.

3DzForMe

Great looking game, really nice graphics! :D 
BLitz3D, IDEal, AGK Studio, BMax, Java Code, Cerberus
Recent Hardware: Dell Laptop
Oldest Hardware: Commodore Amiga 1200 with 1084S Monitor & Blitz Basic 2.1

zxretrosoft

Thank you very much, my friends!
Yes, I'm still tweaking the AI, I'm sure it will play better with time.

Anyway, try the PC desktop version. The browser version is less intelligent (because the hosting is slow).

Thank you!!

mainsworthy

Quote from: zxretrosoft on March 09, 2024, 15:22:47Thank you very much, my friends!
Yes, I'm still tweaking the AI, I'm sure it will play better with time.

Anyway, try the PC desktop version. The browser version is less intelligent (because the hosting is slow).

Thank you!!


Hi, I dont know if you want any help on A.I. but I will say because I have done lots with simular games to yours. 

first you make a list of all moves possible, then go through list one at a time and make a list for all enemy moves in responce to your move. you do this to about 4 deep, but 6 is better. when you drill down to final layer your score the board for how many good things you have. then next move etc... you then play the move with highest prodicted score. also when your making moves if any score is below your current best then ignore that part of the tree, this is prunig.

hope this helps.

Baggey

#6
Quote from: mainsworthy on March 10, 2024, 12:42:51
Quote from: zxretrosoft on March 09, 2024, 15:22:47Thank you very much, my friends!
Yes, I'm still tweaking the AI, I'm sure it will play better with time.

Anyway, try the PC desktop version. The browser version is less intelligent (because the hosting is slow).

Thank you!!


Hi, I dont know if you want any help on A.I. but I will say because I have done lots with simular games to yours.

first you make a list of all moves possible, then go through list one at a time and make a list for all enemy moves in responce to your move. you do this to about 4 deep, but 6 is better. when you drill down to final layer your score the board for how many good things you have. then next move etc... you then play the move with highest prodicted score. also when your making moves if any score is below your current best then ignore that part of the tree, this is prunig.

hope this helps.
Deviating slightly! ::) How would you go about a Chess game? Maybe another thread? ;D

There's a game called 'PSI CHESS' for the Zx Spectrum. It had a facility to change the pieces but that never happened! Maybe today we could!?

Kindest Regards Baggey
Running a PC that just Aint fast enough!? i7 4Ghz Quad core 24GB ram 1TB SSD and NVIDIA Quadro K620 . DID Technology stop! Or have we been assimulated!

ZX Spectrum 48k, C64, ORIC Atmos 48K, Enterprise 128K, The SID chip. Im Misunderstood!

mainsworthy

Quote from: Baggey on March 11, 2024, 19:19:51
Quote from: mainsworthy on March 10, 2024, 12:42:51
Quote from: zxretrosoft on March 09, 2024, 15:22:47Thank you very much, my friends!
Yes, I'm still tweaking the AI, I'm sure it will play better with time.

Anyway, try the PC desktop version. The browser version is less intelligent (because the hosting is slow).

Thank you!!


Hi, I dont know if you want any help on A.I. but I will say because I have done lots with simular games to yours.

first you make a list of all moves possible, then go through list one at a time and make a list for all enemy moves in responce to your move. you do this to about 4 deep, but 6 is better. when you drill down to final layer your score the board for how many good things you have. then next move etc... you then play the move with highest prodicted score. also when your making moves if any score is below your current best then ignore that part of the tree, this is prunig.

hope this helps.
Deviating slightly! ::) How would you go about a Chess game? Maybe another thread? ;D

There's a game called 'PSI CHESS' for the Zx Spectrum. It had a facility to change the pieces but that never happened! Maybe today we could!?

Kindest Regards Baggey

the way I decribed above is a chess algo, chess is simple you do it brute force no proper thinking, just eval all outcomes per move , then make highest score move. you use a eval() to add up your pieces - enemy and all the strategic elements.

you make best moves only. when you encounter a lower scoring tree you forget that branch, and move on.

dont need graphics, just A2A4 B6C6 etc... the board is text too RNBQKBNR
                                                                                            PPPPPPPPP
                                                                                            ...............

etc...

when generating moves, you can instead pre array a move list for every piece on every square, so now no need to make a move gen..


zxretrosoft

Thank you!
Compared to chess, Amoriax is a purely positional game (pieces are not eliminated, both players have the same number of stones on the board at all times). This is a disadvantage in a way, and the "minimax" algorithm is not so well functional.

I think games of this type have the same principle. Program valid moves, immediately make a move for one, then for the other, find the maximum and minimum and so on to a certain depth.

But I'm still experimenting  ::)

zxretrosoft

version 1.3

  • AI improvements
  • new graphics elements
  • optimization of the web version
  • bug fixes

Thank you! ❤️

https://zxretrosoft.itch.io/amoriax


Derron

#10
Just feedback on the visuals:

The pegs and the board either have a slightly offset light-direction or the perspective of "board" and "pegs" is different (isometric camera etc).
-> the "left" pegs look as if they are coming from a "left hill" down to the right "bottom"
-> the "right" pegs look as if they come down from "right side hill" down to the left bottom.  (or even more: they look as someone stomped on their bottom left area - which might be the fault of some odd gradient or the wood texture)

- the pegs at the "back" are overlapping the tile-borders more than the front.


I would suggest you add a subtle "drop shadow" below the pegs to make them more "grounded" to the board. Separate the shadow as graphic - so you can easily have "dropping on the board"-pegs (shadow gaining "alpha" and scale changes too).
I would also suggest to do a similar shadow or maybe something different to the "board" itself - very subtle, but just to please the eyes more on "low contrast variations" between board and background (eg below the "H" letter).

Talking about "H" - the letters E, F, G, H lack on contrast. Maybe play with drawing the letters "below" at an offset "-1,-1", in black and with an alpha of maybe 0.2 or so. Just to give it a bit of an "emboss" effect - and increasing readability.
(you might also simply render the letters on the board-graphic or render it on a separate layer so you can "toggle" it off/on or eg have stuff like varying "color" for row/cols you currently hover).

edit: As I was talking about that bottom right area of the board itself ... did you play with a thin "bevel" on the board corners? you know - There is no real "90°"-angle for most elements. So you often simply add a bevel (not big, just ... subtle) to catch more light, to make it look more natural.... Same you might try out for the tile borders. Depending on the desired look ("tinted" wood versus "glued together wood tiles") the tile border should be "lowered" - and if you add a bevel into the "lower areas" and on the "tile corners" it could look more plastic/3d. As your tiles have different "textures" (offsets) I think the "glued together" look is what you are trying to achieve.
As said -- subtle bevel, so low values etc.

bye
Ron

Xerra

Quote from: mainsworthy on March 11, 2024, 19:34:50
Quote from: Baggey on March 11, 2024, 19:19:51
Quote from: mainsworthy on March 10, 2024, 12:42:51
Quote from: zxretrosoft on March 09, 2024, 15:22:47Thank you very much, my friends!
Yes, I'm still tweaking the AI, I'm sure it will play better with time.

Anyway, try the PC desktop version. The browser version is less intelligent (because the hosting is slow).

Thank you!!


Hi, I dont know if you want any help on A.I. but I will say because I have done lots with simular games to yours.

first you make a list of all moves possible, then go through list one at a time and make a list for all enemy moves in responce to your move. you do this to about 4 deep, but 6 is better. when you drill down to final layer your score the board for how many good things you have. then next move etc... you then play the move with highest prodicted score. also when your making moves if any score is below your current best then ignore that part of the tree, this is prunig.

hope this helps.
Deviating slightly! ::) How would you go about a Chess game? Maybe another thread? ;D

There's a game called 'PSI CHESS' for the Zx Spectrum. It had a facility to change the pieces but that never happened! Maybe today we could!?

Kindest Regards Baggey

the way I decribed above is a chess algo, chess is simple you do it brute force no proper thinking, just eval all outcomes per move , then make highest score move. you use a eval() to add up your pieces - enemy and all the strategic elements.

you make best moves only. when you encounter a lower scoring tree you forget that branch, and move on.

dont need graphics, just A2A4 B6C6 etc... the board is text too RNBQKBNR
                                                                                            PPPPPPPPP
                                                                                            ...............

etc...

when generating moves, you can instead pre array a move list for every piece on every square, so now no need to make a move gen..


I'm going to assume you don't actually play chess judging by your solution to coding an AI opponents strategy.
M2 Pro Mac mini - 16GB 512 SSD
ACER Nitro 5 15.6" Gaming Laptop - Intel® Core™ i7, RTX 3050, 1 TB SSD
Vic 20 - 3.5k 1mhz 6502

Latest game - https://xerra.itch.io/Gridrunner
Blog: http://xerra.co.uk
Itch.IO: https://xerra.itch.io/

mainsworthy

#12
Quote from: Xerra on April 11, 2024, 23:13:58
Quote from: mainsworthy on March 11, 2024, 19:34:50
Quote from: Baggey on March 11, 2024, 19:19:51
Quote from: mainsworthy on March 10, 2024, 12:42:51
Quote from: zxretrosoft on March 09, 2024, 15:22:47Thank you very much, my friends!
Yes, I'm still tweaking the AI, I'm sure it will play better with time.

Anyway, try the PC desktop version. The browser version is less intelligent (because the hosting is slow).

Thank you!!


Hi, I dont know if you want any help on A.I. but I will say because I have done lots with simular games to yours.

first you make a list of all moves possible, then go through list one at a time and make a list for all enemy moves in responce to your move. you do this to about 4 deep, but 6 is better. when you drill down to final layer your score the board for how many good things you have. then next move etc... you then play the move with highest prodicted score. also when your making moves if any score is below your current best then ignore that part of the tree, this is prunig.

hope this helps.
Deviating slightly! ::) How would you go about a Chess game? Maybe another thread? ;D

There's a game called 'PSI CHESS' for the Zx Spectrum. It had a facility to change the pieces but that never happened! Maybe today we could!?

Kindest Regards Baggey

the way I decribed above is a chess algo, chess is simple you do it brute force no proper thinking, just eval all outcomes per move , then make highest score move. you use a eval() to add up your pieces - enemy and all the strategic elements.

you make best moves only. when you encounter a lower scoring tree you forget that branch, and move on.

dont need graphics, just A2A4 B6C6 etc... the board is text too RNBQKBNR
                                                                                            PPPPPPPPP
                                                                                            ...............

etc...

when generating moves, you can instead pre array a move list for every piece on every square, so now no need to make a move gen..


I'm going to assume you don't actually play chess judging by your solution to coding an AI opponents strategy.


Im going to asume you never coded a chess engine, if you think there is no strategy, its the eval() function for every move that takes all strategy like position and gives scores for not just pieces but poasition etc... the score is for everything on the board, so strategy is very much part of the solution. but most important you have to want to play the game