Far out at sea there is a war raging.

Two captains with nothing to lose… except for their battle fleets.

Fighting over the simple title - Ruler of the high seas!

One will be victorious, while the other will sleep with the fishes.


This is the sixth instalment of South Africa's ultimate annual A.I. coding competition, the Entelect Challenge. After five successful years, we've once again put our spin on another classic game and we invite programmers, developers and coding enthusiasts of any skill level to put their abilities to the test for their share of over R200k in treasure.

To compete in the challenge, you will need to write an A.I. bot (program) that will outwit and outlast your opponent. The game has been chosen and the rules have been defined. May you have fair winds and following seas!

2017 THEME: BattleshipS

This year's challenge is based on the classic 1967 board game, Battleships. Our variation borrows heavily from the NES version of the game introduced in 1993. Two players will be going head to head, armed with a fleet of battleships, each with their own way of taking down the enemy. Their goal - to sink the other's fleet and live to sail another day! Trying to figure out their opponent's placing strategy, each player must explore the vast unknowns of the grid at sea by shooting everywhere and anywhere. In the end, the surviving player will be victorious!

Over R200k in treasure will be up for grabs! This year we have even more ways to win. Prize money will be awarded to the top eight performing bots as well as various other milestones along the way. Everyone must battle it out through the various battles (events) taking place. The finalists will be announced after the Battle of Cape Lopez in September, then they will battle for the top spot on stage at the rAge expo, October 2017.


How to Enter

In the upcoming weeks the Player Portal will be made available, and entrants will need to register on the portal to submit their entries. The Player Portal is a centralized location where contestants can submit and test their bots, join clans and view battle results.

Until then, subscribe to receive updates on all things Entelect Challenge by clicking the button below.


Need assistance?

For guidance, help, answers or a bit of friendly banter, head on over to the Entelect Challenge community forum or send an email to challenge@entelect.co.za.

Community Forum Email


There will be various battles and each one will give you a chance to win a golden ticket. A golden ticket is your entrance into the finals at Rage (Golden tickets aren't transferable). Bots will play against each other in various tournament formats throughout these events. We kicked off the competition in April 2017.

Before every battle we will have a "call to arms" event. These hackathon-style events will give you the opportunity to get expert advice on your bot, as well as community involvement or assistance. We will also be handing out Jetbrains licences as spot prizes at these events.

Tournament Leaderboards

The Battle of Port Royal

  • Takes place on:
    9 June 2017
  • Format:
    Round robin
  • Prizes

    • First Prize:
      Golden ticket
    • Second Prize:
      R2 000
    • Third Prize:
      R1 000

The Battle of Tortuga

  • Takes place on:
    30 July 2017
  • Format:
    Round robin
  • Prizes

    • First Prize:
      Golden ticket
    • Second Prize:
      R2 000
    • Third Prize:
      R1 000

The Battle of Nam Quan

  • Takes place on:
    15 September 2017
  • Deadline for bot submissions for the competition
  • Format:
    Double Elimination
    Round robin
  • Prizes

    • Top 6:
      Golden ticket each

The Battle of Cape Lopez

  • Takes place on:
    7 October 2017
  • Stage and Time:
    Cosplay stage
    12:30 - 14:00
  • Takes place at rAge
  • Format:
    Double Elimination
  • Prizes

    • First Prize:
      R70 000
    • Second Prize:
      R35 000
    • Third & Fourth Prize:
      R25 000
    • Fifth to Eighth Prize:
      R10 000


To start off you'll need a bot. You can write your own bot or you can use one of the provided sample bots and just modify it to play out your algorithm. To test your bot, run it in the game engine on your own machine or upload your bot to the player portal, join a clan and challenge other contestants.

First read the instructions on the Github page to make sure you understand all the steps to setup your own bot. The easiest way to use the sample bots is to download the repository zip file from Github (use the link below) or alternatively install Git and clone the repository.

To get started with the game engine and run your bot you will need the game engine files that can be found at the link below. The included Run.bat file will run the game with the reference bot. That file can be edited to run your bot instead. Please visit the Github page for more detailed instructions.

Github Game files

This year we have provided sample bot implementations for C# and Java. We will also review any sample bot implementations contributed by the community and make them available to other contestants that want to use that specific language.

Please note that as the competition progresses, the game engine will change. After each battle event, we will upgrade your ships to make the game a bit harder. The game engine will be backwards compatible, so the bot you build for the first battle will work in the second, but it might not fare as well. Keep an eye out for the latest rules for the game in the following section as well as on the Github repository.


(Game Engine v1.1.1)

For more detail related to the map generation, player rules, game engine rules etc., click the various sections below. Please make sure you study the sections below very closely as any deviation from, or misunderstanding of the specifications will result in the disqualification of your entry. If you are uncertain of anything, please use the community forum to ask a question, or send an email to challenge@entelect.co.za.



  1. A player can only pass through one command during a round.

  2. During the first phase a player has to place their ships.

  3. After a successful phase 1, a player can pass through one of the following commands

    • Do Nothing - nothing will happen

    • Fire Shot - Fires a shot at the given location

    • Fire Double Shot - Fires two shots given a center location

    • Fire Corner Shot - Fires four shots given a center location

    • Fire Cross Shot Diagonal - Fires five shots given a center location

    • Fire Cross Shot Horizontal - Fires five shots given a center location

    • Fire Seeker Missile - Finds the nearst ship with an eclidian distance of 2 units or less away, given a center location

  4. After each round energy is added to the player depending on the size of the map.

    • Small Map = 2 Energy per round

    • Medium Map = 3 Energy per round

    • Large Map = 4 Energy per round

  5. Each ship has two weapons, a single shot weapon and a special weapon, unique to that ship, each weapon requires energy to use, the unique weapon can only be used if the ship is not destroyed and the player has enough energy.

    • Single Shot - All ships - Requires 1 energy to use

    • Double Shot - Destroyer - Requires 8 rounds worth of energy to use

    • Corner Shot - Carrier - Requires 10 rounds worth of energy to use

    • Cross Shot Diagonal - Battleship - Requires 12 rounds worth of energy to use

    • Cross Shot Horizontal - Cruiser - Requires 14 rounds worth of energy to use

    • Seeker Missile - Submarine - Requires 10 rounds worth of energy to use

  6. A shot will damage a ship if it hits, else it will just hit the water and do nothing.

  7. A player earns points for each successful shot landed and for completely destroying an enemy's ship.

  8. A player is victorious if he destroy's all of the enemy's ships first, in the case of a tie the winner will be the player who landed the first shot successfully, if it is still a tie it will be the player who had the least amount of first phase failed commands.

Map Generation

The map will be square sized based on the given size rules. Please note that each player has their own map and this is the size of the player's map and not the entire game map.

  1. 7 x 7 if small is selected

  2. 10 x 10 if medium is selected

  3. 14 x 14 if large is selected

Each player will only see where they hit and missed on their opponent's map.

The ship sizes are as follows:

  • Carrier - 5 blocks

  • Battleship - 4 blocks

  • Submarine - 3 blocks

  • Cruiser - 3 blocks

  • Destroyer - 2 blocks

Player Rules

Players can either be console players or bots. Both follow the same game engine rules.

  1. Players will only be able submit one command per round. The game engine will reject any additional commands sent by the player.

  2. Phase 1 will be a maximum of 5 rounds long, if a player is unable to place their ships during these 5 turns they will be destroyed and the opposing player will win.

  3. During the first phase a player can only pass through the PlaceShipCommand, if another Command is sent through or the player fails to place their ships, their FailedFirstPhaseCommands counter will be incremented, if this reaches 5 they will be killed off.

  4. After the first phase is done, each player can send through one of the following commands.

    • Do Nothing - This will skip their turn, after 20 DoNothing Commands the player will be killed off to protect the game engine from faulty bots.

    • Fire Shot Command - This will fire a shot at the enemy's map, if the shot is successful and hits an opposing ship, the player will be awarded points, if the shot destroys an enemy ship, they will be awarded additional points for sinking the ship.

    • Fire Double Shot Command - This will fire two shots at the enemy's map given a center point and a direction, the direction will determine whether the shots are horizontal or vertical. The Shots will be one block to the west and east or the north and south of the center point. (3 x 3 cells)

    • Fire Corner Shot Command - This will fire four shots at the enemy's map, given a center point the shots will be one block to the north-west, north-east, south-east and south-west of the center point. (3 x 3 cells)

    • Fire Cross Shot Diagonal Command - This will fire five shots givn a center point, with four being the same as the corner shot and inclusive of the center point. (3 x 3 cells)

    • Fire Cross Shot Horizontal Command - This will fire five shots, same as the CrossShotDiagonal, but in a horizontal and vertical cross. (3 x 3 cells)

    • Fire Seeker Missile Command - This will fire a missile at target area, finding the nearest ship cell with an eclidian distance of 2 units or less away from the center point given , if there is no ship the center point given will be the target of the missile. (5 x 5 cells)

  5. Bot players will have the following additional rules

    1. Bot processes will be forcefully terminated after 4 seconds

    2. Bots will not be allowed to exceed a total execution time of 2 seconds

    3. Bots processes might be run with elevated processor priority. (For this reason the game has to be run with administrator privileges)

    4. Calibrations will be done at the start of a game to determine additional processor time. So if the calibration bot takes 200ms to read the files and make a move decision then your bot will be allowed an additional 200ms to complete.

    5. Malfunctioning bots or bots that exceed their time limit will send back a do nothing command.

    6. Bot players that post more than 20 do nothing commands in a row will be assumed broken and will automatically be killed.

    7. Players must ensure that the bot process exits gracefully within the allotted time (Rule 5-B).

    8. All bot logic processing must be done within the source code submitted for your bot. You may not use network calls such as web services to aid in your bots decision making. No child processes will be allowed and should it be discovered you will be disqualified.

    9. The nickname used on the bot meta file is used in the map.txt file, for this reason you will only be allowed alphanumeric characters as your nickname, and no special characters such as Carriage Return, Line Feed and New Line will not be allowed.

  6. Entelect reserves the right to change/update these rules at any point during the competition.

Game Engine

The following rules describe how the game engine will run and process the game

  1. The game is split up into 2 phases:

    • Phase 1: the placing of the ships phase. During this phase, each player has 5 chances to place their ships on the map. If a player is not successful they will receive an increase to their failed first phase counter, if this reaches 5 they will be killed off.

    • Phase 2: firing shots at the opponent's map. During this phase each player takes a shot at the opposing player's map in hope of hitting a ship and destroying all of the enemy's ships first.

  2. After each round of phase 2, each player will receive energy depending on the size of the map.

    • Small Map = 2 Energy per round

    • Medium Map = 3 Energy per round

    • Large Map = 4 Energy per round

  3. The game contains the following entities:

    • Empty space

    • Player Ship

  4. An empty space can be occupied by a ship.

  5. A space occupied by a ship that is hit will be marked as hit (The player who landed the shot will have their shots landed counter increased).

  6. A space not occupied by a ship that is fired at will be marked as missed (The player who missed the shot will have their shots fired counter increased, regardless if it is a hit or a miss).

  7. The game engine will process rounds in the following order:

    • Process Player Commands (Depending on the phase)

    • Add Energy to players, given the size of the map

    • Kill off Players (A player will be killed if all of his ships are destroyed)

  8. If all of a player's ships are destroyed they will be eliminated and the opposing player will be the winner.

  9. If both players are killed at the same time, the following will be used to determine a winner:

    • Player who still has ships remaining.

    • Player with the most points.

    • Player who landed a shot first.

    • Player who had the least amount of failed place ship commands.


Players will be awarded points during the game based on the following:

  1. For each successful shot you will be awarded 10 points.

  2. For destroying an enemy ship you will be awarded 30 points.

  3. For killing the enemy player you will be awarded an additional 100 points.

Terms & Conditions

Please take note of the following important terms and conditions. If you have any questions, please direct them to challenge@entelect.co.za.

  1. The challenge is only open to individuals residing in the Republic of South Africa.

  2. Entrants must have a valid South African bank account.

  3. Entry must be executable on the Windows Server 2012 operating system.

  4. An entry may not be:

    1. Copied (plagiarised);

    2. Retrieved from other websites;

    3. The work of any other individual other than the participant.

  5. Although consultation with your peers is encouraged, team-based entries are not allowed and will be disqualified.

  6. The semi-finals and finals will take place LIVE at rAge expo in Johannesburg in October 2017. More info on rAge expo can be found at

  7. Finalists will receive free passes to the rAge expo in Johannesburg and will be expected to attend.

  8. Any entry which exhibits behaviour that is deemed unfair, or violates the spirit of good sportsmanship will be immediately disqualified. This includes making any moves which are considered invalid according to the technical specifications laid out for the competition, memory scanning or intentional corruption of the game state.

  9. An attempt to disrupt or alter the normal operation of the Entelect Challenge software or the Entelect servers will result in the immediate involvement of law enforcement officials.

  10. The competition is not open to employees of Entelect Software or their immediate families.

  11. The closing date of the challenge is 15th of September 2017. No further entries will be accepted after this time.

  12. By entering the competition, the winner agrees to follow all rules and requirements as outlined by Entelect Software.

  13. The prize is not transferable.

  14. Entelect Software will not disclose any of the participants' personal information.

  15. By submitting code under your name, you are asserting that you did this work unaided. Entelect Software reserves the right to verify by technical assessment or interview to confirm that an applicant did create and implement the solution. Failure to comply can result on immediate disqualification. The ruling will be final.

  16. Entelect Software reserves the right to amend these rules at any time.

  17. Entelect Software or any of its subsidiaries cannot be held responsible for any loss or damage caused as a result of participation in the Entelect Challenge.

  18. Entelect Software reserve the right to use the name & image of entrants for press purposes relating to the Entelect Challenge.

  19. The challenge winner will make themselves available for press opportunities relating to the Entelect Challenge under conditions which are agreeable by both parties.

  20. The judges' decision is final and no correspondence will be entered into.


Entelect assists the world's best companies in the delivery of customised software solutions that differentiate them in the marketplace. Our solutions enable our clients to meet the rapidly changing demands of their businesses and stay competitive. With a team of over 400 software engineers, we have for the last 16 years been delivering and solving the most demanding software problems across all industry sectors.

Our real differentiator is the qualification of our people, intellectual property and professional approach to solving complex software problems. Our ideology is focused around the delivery of true value to our clients, employees and the greater South African community. We are South Africa's top software engineering company and the quality of our staff, our track record of delivery and blue-chip client base speaks for itself.