Sicaria
Sicaria
Role
Producer, AI Programmer
Duration
28 weeks
Team Size
38 developers
Engine
Unreal Engine
Platform
PC
Genre
Stealth
Role
Producer, AI Programmer
Duration
28 weeks
Team Size
38 developers
Engine
Unreal Engine
Platform
PC
Genre
Stealth
Sicaria is a stealth game set in 80 years war Antwerp in which you play as an engineer taking out Spanish soldiers who have put your city in siege. This is the first game I have worked on that will be released on Steam. Initially I started as an AI programmer and mid development I switched to Producer role. This game has been released on Steam.
Sicaria is a stealth game set in 80 years war Antwerp in which you play as an engineer taking out Spanish soldiers who have put your city in siege. This is the first game I have worked on that will be released on Steam. Initially I started as an AI programmer and mid development I switched to Producer role. This game has been released on Steam.

Role
Producer, AI Programmer
Duration
28 weeks
Team Size
38 developers
Engine
Unreal Engine
Platform
PC
Genre
Stealth
Sicaria
Role
Producer, AI Programmer
Duration
28 weeks
Team Size
38 developers
Engine
Unreal Engine
Platform
PC
Genre
Stealth
Role
Producer, AI Programmer
Duration
28 weeks
Team Size
38 developers
Engine
Unreal Engine
Platform
PC
Genre
Stealth
Sicaria is a stealth game set in 80 years war Antwerp in which you play as an engineer taking out Spanish soldiers who have put your city in siege. This is the first game I have worked on that will be released on Steam. Initially I started as an AI programmer and mid development I switched to Producer role. This game has been released on Steam.

Role
Producer, AI Programmer
Duration
28 weeks
Team Size
38 developers
Engine
Unreal Engine
Platform
PC
Genre
Stealth
My Contributions
My Contributions
My Contributions
Gantt chart production plan
Gantt chart production plan
Gantt chart production plan
My role as a producer started in a transition from pre-production to the production stage of the project, and therefore, my main task was to create a production plan. Firstly, I gathered my leads to establish a game macro document that served as the alignment tool for all developers and an asset list for artists. Then, we analyzed the size and quality of the vertical slice with the velocity of the team to determine the size of the game. Having all the data and materials, I created a roadmap consisting of all features we want to have ordered by priority of adding them to the game with specifying dependencies between certain features (e.g., enemy melee attack with player health). This roadmap served as the main building block for creating a Gantt chart on Jira to see things on a time scale. The results proved to be great since the team understood the main things that need to be worked on at what time, what other features are dependent on their work, and clarity on what each milestone will bring.
My role as a producer started in a transition from pre-production to the production stage of the project, and therefore, my main task was to create a production plan. Firstly, I gathered my leads to establish a game macro document that served as the alignment tool for all developers and an asset list for artists. Then, we analyzed the size and quality of the vertical slice with the velocity of the team to determine the size of the game. Having all the data and materials, I created a roadmap consisting of all features we want to have ordered by priority of adding them to the game with specifying dependencies between certain features (e.g., enemy melee attack with player health). This roadmap served as the main building block for creating a Gantt chart on Jira to see things on a time scale. The results proved to be great since the team understood the main things that need to be worked on at what time, what other features are dependent on their work, and clarity on what each milestone will bring.
My role as a producer started in a transition from pre-production to the production stage of the project, and therefore, my main task was to create a production plan. Firstly, I gathered my leads to establish a game macro document that served as the alignment tool for all developers and an asset list for artists. Then, we analyzed the size and quality of the vertical slice with the velocity of the team to determine the size of the game. Having all the data and materials, I created a roadmap consisting of all features we want to have ordered by priority of adding them to the game with specifying dependencies between certain features (e.g., enemy melee attack with player health). This roadmap served as the main building block for creating a Gantt chart on Jira to see things on a time scale. The results proved to be great since the team understood the main things that need to be worked on at what time, what other features are dependent on their work, and clarity on what each milestone will bring.
Enemy AI idle state
Enemy AI idle state
Enemy AI idle state
I started this project as an AI programmer and one of my main tasks was to explore and create methods for enemy AI patrolling systems. I have researched and created two methods. The first one was creating a patrol component for enemies that consisted of static patrol points placed in level creating a patrol route for the enemies. The other one was inspired by Dynamic Guard Patrol in Stealth Games paper where the enemies do not have a set patrol path but patrol a space by checking which areas it hasn’t seen for the longest time. I accomplished it by generating points on every navmesh polygon and creating a reference of all those for the enemy to check which ones it hasn’t seen for the longest time to go and check them. In the end, the team decided to use the static patrol route method since it was easier and more predictable for level designers to work with and fitted better with our game.
I started this project as an AI programmer and one of my main tasks was to explore and create methods for enemy AI patrolling systems. I have researched and created two methods. The first one was creating a patrol component for enemies that consisted of static patrol points placed in level creating a patrol route for the enemies. The other one was inspired by Dynamic Guard Patrol in Stealth Games paper where the enemies do not have a set patrol path but patrol a space by checking which areas it hasn’t seen for the longest time. I accomplished it by generating points on every navmesh polygon and creating a reference of all those for the enemy to check which ones it hasn’t seen for the longest time to go and check them. In the end, the team decided to use the static patrol route method since it was easier and more predictable for level designers to work with and fitted better with our game.
I started this project as an AI programmer and one of my main tasks was to explore and create methods for enemy AI patrolling systems. I have researched and created two methods. The first one was creating a patrol component for enemies that consisted of static patrol points placed in level creating a patrol route for the enemies. The other one was inspired by Dynamic Guard Patrol in Stealth Games paper where the enemies do not have a set patrol path but patrol a space by checking which areas it hasn’t seen for the longest time. I accomplished it by generating points on every navmesh polygon and creating a reference of all those for the enemy to check which ones it hasn’t seen for the longest time to go and check them. In the end, the team decided to use the static patrol route method since it was easier and more predictable for level designers to work with and fitted better with our game.
Jira & Confluence management
Jira & Confluence management
Jira & Confluence management
The team consisting of 40 developers requires a lot of structure and alignment. Our main tools for that were Jira & Confluence. Creating sprints and planning user stories was the main task for the lead team, which I was part of, and therefore, before each sprint, we discussed what user stories would be worked on. We then shared the user stories with the team to distribute them and break them down into subtasks to figure out the man-days required to complete them. We stored all this data on Confluence, where every team member could share or find any information regarding planning, retrospectives, meeting notes, pipelines, etc. My main addition was technical documentation containing perforce guidelines, bug reporting, opening and building the project, etc. It is very beneficial for the team to have documentation serving as an alignment tool and source of information instead of spending time discussing things that were discussed already.
The team consisting of 40 developers requires a lot of structure and alignment. Our main tools for that were Jira & Confluence. Creating sprints and planning user stories was the main task for the lead team, which I was part of, and therefore, before each sprint, we discussed what user stories would be worked on. We then shared the user stories with the team to distribute them and break them down into subtasks to figure out the man-days required to complete them. We stored all this data on Confluence, where every team member could share or find any information regarding planning, retrospectives, meeting notes, pipelines, etc. My main addition was technical documentation containing perforce guidelines, bug reporting, opening and building the project, etc. It is very beneficial for the team to have documentation serving as an alignment tool and source of information instead of spending time discussing things that were discussed already.
The team consisting of 40 developers requires a lot of structure and alignment. Our main tools for that were Jira & Confluence. Creating sprints and planning user stories was the main task for the lead team, which I was part of, and therefore, before each sprint, we discussed what user stories would be worked on. We then shared the user stories with the team to distribute them and break them down into subtasks to figure out the man-days required to complete them. We stored all this data on Confluence, where every team member could share or find any information regarding planning, retrospectives, meeting notes, pipelines, etc. My main addition was technical documentation containing perforce guidelines, bug reporting, opening and building the project, etc. It is very beneficial for the team to have documentation serving as an alignment tool and source of information instead of spending time discussing things that were discussed already.
Enemy AI alert state
Enemy AI alert state
Enemy AI alert state
My second biggest contribution as an AI programmer was the implementation of an enemy AI alert state in which enemies are searching for the player. My initial solution was to make the enemies look randomly in an area around the last known location of the player. However, I was not satisfied with the randomness, and therefore, I thought about a solution similar to the dynamic patrol I researched for the Idle state. I found the Environment Query System to be a great tool for this problem since it allows query points on a navmesh, which would be logical for an enemy to investigate, such as looking behind nearby covers. Therefore, I used this system in my alert state behavior tree to query these points based on distance and trace check from the last known position of the player and enemy itself to then select one of the top 10% results to give it a bit of unpredictability to make it harder for the player to hide.
My second biggest contribution as an AI programmer was the implementation of an enemy AI alert state in which enemies are searching for the player. My initial solution was to make the enemies look randomly in an area around the last known location of the player. However, I was not satisfied with the randomness, and therefore, I thought about a solution similar to the dynamic patrol I researched for the Idle state. I found the Environment Query System to be a great tool for this problem since it allows query points on a navmesh, which would be logical for an enemy to investigate, such as looking behind nearby covers. Therefore, I used this system in my alert state behavior tree to query these points based on distance and trace check from the last known position of the player and enemy itself to then select one of the top 10% results to give it a bit of unpredictability to make it harder for the player to hide.
My second biggest contribution as an AI programmer was the implementation of an enemy AI alert state in which enemies are searching for the player. My initial solution was to make the enemies look randomly in an area around the last known location of the player. However, I was not satisfied with the randomness, and therefore, I thought about a solution similar to the dynamic patrol I researched for the Idle state. I found the Environment Query System to be a great tool for this problem since it allows query points on a navmesh, which would be logical for an enemy to investigate, such as looking behind nearby covers. Therefore, I used this system in my alert state behavior tree to query these points based on distance and trace check from the last known position of the player and enemy itself to then select one of the top 10% results to give it a bit of unpredictability to make it harder for the player to hide.
Steam management
Steam management
Steam management
An important task I was responsible for was the management of Steamworks. Learning how to create and update a Steam store page brought me close to understanding how to manage the community, share information, and promote a game on Steam. I found out it is very beneficial to interact with the community and create updates or patch notes to communicate with players, get positive reviews, and figure out what the players find interesting about the game. Building a solid base makes it then easier to promote the game and reach new players. The other main contribution to marketing was creating content for our socials, mainly TikTok and YouTube videos.
An important task I was responsible for was the management of Steamworks. Learning how to create and update a Steam store page brought me close to understanding how to manage the community, share information, and promote a game on Steam. I found out it is very beneficial to interact with the community and create updates or patch notes to communicate with players, get positive reviews, and figure out what the players find interesting about the game. Building a solid base makes it then easier to promote the game and reach new players. The other main contribution to marketing was creating content for our socials, mainly TikTok and YouTube videos.
An important task I was responsible for was the management of Steamworks. Learning how to create and update a Steam store page brought me close to understanding how to manage the community, share information, and promote a game on Steam. I found out it is very beneficial to interact with the community and create updates or patch notes to communicate with players, get positive reviews, and figure out what the players find interesting about the game. Building a solid base makes it then easier to promote the game and reach new players. The other main contribution to marketing was creating content for our socials, mainly TikTok and YouTube videos.
Main Takeaways
Main Takeaways
Main Takeaways
SCRUM is great for incrementing the product on a regular basis but bad for delivering milestones at deadlines. SCRUM is efficient when it is not clear what the game will look like and ideas are explored. Once it is clear what the product should be it is more beneficial to switch to either Kanban or Waterfall inspired methods. They have the benefit of actually delivering results at specific dates.
Team of more than 10 people requires a better team structure than having three leads. Feature teams is a solution to this problem where you concentrate together people collaborating on the same feature. This may bring issues when it comes to cross-team communication, therefore it is important to organize synchronization meetings.
Even if you do not know what the result should look like direction is always necessary. Everyone needs a starting push and the team expects the producer to be the first spark. It requires a lot of preparation before every planning, discussion, meeting because if any person should be prepared, it would be the producer. Main role of the producer is therefore to set direction and monitor the team.
SCRUM is great for incrementing the product on a regular basis but bad for delivering milestones at deadlines. SCRUM is efficient when it is not clear what the game will look like and ideas are explored. Once it is clear what the product should be it is more beneficial to switch to either Kanban or Waterfall inspired methods. They have the benefit of actually delivering results at specific dates.
Team of more than 10 people requires a better team structure than having three leads. Feature teams is a solution to this problem where you concentrate together people collaborating on the same feature. This may bring issues when it comes to cross-team communication, therefore it is important to organize synchronization meetings.
Even if you do not know what the result should look like direction is always necessary. Everyone needs a starting push and the team expects the producer to be the first spark. It requires a lot of preparation before every planning, discussion, meeting because if any person should be prepared, it would be the producer. Main role of the producer is therefore to set direction and monitor the team.
SCRUM is great for incrementing the product on a regular basis but bad for delivering milestones at deadlines. SCRUM is efficient when it is not clear what the game will look like and ideas are explored. Once it is clear what the product should be it is more beneficial to switch to either Kanban or Waterfall inspired methods. They have the benefit of actually delivering results at specific dates.
Team of more than 10 people requires a better team structure than having three leads. Feature teams is a solution to this problem where you concentrate together people collaborating on the same feature. This may bring issues when it comes to cross-team communication, therefore it is important to organize synchronization meetings.
Even if you do not know what the result should look like direction is always necessary. Everyone needs a starting push and the team expects the producer to be the first spark. It requires a lot of preparation before every planning, discussion, meeting because if any person should be prepared, it would be the producer. Main role of the producer is therefore to set direction and monitor the team.
Gallery
Gallery
Gallery
Other Projects
Other Projects
Other Projects
© Copyright 2023. All rights Reserved by Martin Bazlekov.
© Copyright 2023. All rights Reserved by Martin Bazlekov.
© Copyright 2023. All rights Reserved by Martin Bazlekov.
© Copyright 2023. All rights Reserved by Martin Bazlekov.






















