In this document keep track of what we have done in the last Sprints (not the current). It is an historical document linking the issues and pull request that we opened or used in a given Sprints, so that we have an historical unique entry point for the work we have done.
The typical Sprint in our organizaion should last a week, but the first ones have a different duration as they are done into the holidays.
This is not exactly a real Sprint, but a first basic footprint for the future work (this is the reason for name “Sprint 0”). We made a lot of internal meetings to define context bounds and do knowledge crunching.
Precisely, we started doing some vague knowledge chrunching sessions from the submission of the project on the 6th of December, but we started making some heavy effort from the 24th.
In addition, we set the foundations of the project, by giving the Gradle Subproject Structure, setting up the test framework (ScalaTest) and starting setting up the CI.
Useful links:
Here is how we really start the group work, splitting the team into two sub-teams, each one working into a different part of the project. We proceeded in parallel mostly, but we have done some intermediate meetings for integrate parts and solve common problems. The two parts are in progress yet, and they will be finished in the next Sprints. In addition, some minor tasks have been finished during the Sprint.
Roles:
Model
basics, and linked to it, also the Interpreter
and Resolver
components;Parser
and Lexer
components.Useful links:
In the second Sprint we basically continued the work started in the first one, divided in teams. Tasks regarding model and Prolog engine are two of the most funding part of the project, and as such they deserve particular attention. In particular, we have carried on various meeting to take some decisions about how to use the model in a more functional way, as described in the linked issue.
Useful links:
In the third Sprint we basically continued the work started in the previous, divided in teams. Tasks about Model and Engine basic structure are basically finished. We handled merge conflicts about the two parts during the Sprint Review. In addition, some minor tasks have been resolved in common meetings.
Useful links:
In this Sprint we closed the base structure tasks of the previous Sprint, and we continued working divided in teams: we finished Model’s ScalaDoc and refactoring, and started a re-organization of the ItemRef
concept, as an `AST. Additionally, we started some minor tasks, as an automation structure for the report, and CI optimization.
Useful links:
In this Sprint we continued working in teams, bringing up more other tasks. Team 1 revised the model, dealing with the concept of MessagePusher
and Message
s, improving the ScalaDoc and making some refactoring. In the meanwhile, Team 2 started working in a more structured concept of ItemDescription
and Verbs
, as a lexical abstraction for the game concepts. In addition, the team refactored the Prolog
generation and some of the related concepts.
Furthermore, a task has been closed together, regarding a re-organization of the reports in a Gradle subproject, with a dedicated formatter and Linter for Markdown.
Useful links:
In this Sprint we continued working divided in groups. Team 2 continued and finished the dictionary module, a sort of initial “wrapper” used to generate Prolog code initially. Team 1 carried on various tasks regarding CI, QA enhancement, release generation, and created a bot for dependency update.
In addition, reports and documentation now are located in a separate repository, and a new page for the project description has been deployed.
Useful links:
In this Sprint we continued working divided in groups. Team 1 we re-organized the commons package, by splitting common reactions from the behaviors, we added some utility builders, and worked hard on the CI, by enabling a well-defined release workflow (with automatic scalaDoc generation and deploy at the end of the process), and by enabling coverage threshold, both on GH Actions and with the QA tool SonarCloud. Team 2 worked into the CLI, by enabling a specific test framework for ZIO. In addition, they worked into the resolver, in order to manage ambiguous description. Then, in a common meeting with all members, we work into the Escape Room example, by creating a real story with our framework. We also created our first stable releases.
Useful links:
The sprint 8 started with an important refactor of the model, carried out jointly from all members of the team. This was an important modification, regarding the split between State
and Message
s, that are separate entities actually, involved at different abstraction levels. In this joint group configuration, we also finished the second example, called PokeQuest. In the second part of the week, resuming the sub-team organization, we finished some minor tasks like a re-organization of the Reports’ CI and the common package based on the new State-Message configuration (in Team 1), and a refactoring/scaladoc addition for parserand
dictionary` packages (in Team 2).
Useful links:
In Sprint 9 we focused on reports, in particular into the PPS one. The plan was to join forces reorganizing pre-existent documentation produced throughout the duration of the project into a single report, and finish it. The initial plan was to work in sub-teams: from Monday to Wednesday the Team 1 should have worked on chapters 1, 2, 3, meanwhile [@scalaquest/team-2] on 4,5,7. Then, in the second part of the week we should have switched roles, in order to complete, review and integrate the different parts. Due to various problems related to lessons and personal problems of the members, the second phase was prolonged, and continued until the next Sprint with both teams focusing on the last chapters. In addition, a major feature and some minor task has been completed, such as the enabling of continuous delivery on Maven Central, enabling of a development prerelease delivery system, and some minor adjustments.
Useful links:
In Sprint 10 we focused onto finish the PPS report. We finished it at the end of the Sprint. In parallel, we started working on the LSS report, we finished the last example WizardQuest, and we finished some minor modifications to the CI. We are planning to close the works in the next Sprint.
Useful links:
This is the final Sprint of the project, where we closed the last fixes and report revisions.
Useful links:
EscapeRoom is the first example created for ScalaQuest. The example is created using mainly configuring builders and Item
s given by the library.
In the following lines there is shown a little guide for playing this example, explaining the steps to do in order to win the match.
After have red the initial message shown at the beginning, it’s always recommended typing the command inspect
and send it pressing the Enter button. Furthermore, this command is essential to understand the environment design and content.
About sentences, articles are always optional, and adjectives also but just if there aren’t ambiguity.
Initially, you are in a basement. Inspecting the room there are:
You may try the command open the hatch with the crowbar
, but it will be ineffective. Sending open the chest
will open it, without needing a chest key. An old rusty key
will appear in the room. Now the command open the hatch with the key
will work and you can go in the living room using go u
,go up
or enter the hatch
. Now you can go in the bathroom using go north
, but it will contain nothing! So go back, and you may want to eat an apple… but which? Eat red apple
will be a tasty action, while eat the green apple
will bring in a sad ending, because is poisoned. Anyway, there is a big doorway, which is locked, so it needs some tool, like the chest previously. So, neither open the doorway
nor open doorway with key
, because it’s not avalaible anymore. Going back in the basement, there is a crowbar (maybe will be effective?). go down
and take crowbar
will bring it in your bag, as you can see with inspect bag
. This allows you to move the object in another room. Go up again and open the doorway with crowbar
will let you win.
Pokequest is the second example created for ScalaQuest. The example is created using mainly custom Item
s.
In the following lines there is shown a little guide for playing this example, explaining the steps to do in order to win the match.
After have red the initial message shown at the beginning, it’s always recommended to type the command inspect
and send it pressing the Enter button. Furthermore, this command is essential to understand the environment design and content.
About sentences, articles are always optional, and adjectives also but just if there aren’t ambiguity.
Initially, you are in Vermilion City. Inspecting the room there is a sleeping snorlax. inspect bag
will tell there are a pikachu, a pokeball, a pokeflute.
Snorlax is sleeping and blocking the way, but wake snorlax
would be ineffective and lead you to death. So, the pokeflute may be useful…
play the pokeflute
or wake snorlax with pokeflute
allows you to have the free way, going north with go n
and moving into the forest.
There is a Charizard into the forest! You should capture it!
With catch charizard with pokeball
it could happen, but at first time it is too strong, and in that case it would fly away.
This means it’s Pikachu’s turn!
attack charizard with pikachu
is very effective, so don’t do it again, or Charizard will die!
Now catch charizard with pokeball
will work and let you win the match!
WizardQuest is the last example given for the project. This makes use of custom Item
s and a custom Ground
, showing the potentiality of the last construct, mainly.
In the following lines there is a little guide for playing this example, explaining the steps to take in order to win the match.
After reading the initial message, it’s always recommended typing the command inspect
and send it pressing the Enter button. Furthermore, this command is essential to understand the environment design and content.
About sentences, articles are always optional, and adjectives also but just if there aren’t ambiguity.
You are Harry Potter. And probably in the worst situation. Inspecting the room, you discover that you are in the Chamber of Secrets, with Tom Riddle in the front of you.
Tom has been subjugated a terrible basilisk and the poor Ginny Weasley is lying in the ground. Fortunately the basilisk is blind, but you don’t have any weapon to kill it.
You have to run away, through a tunnel in direction East with the command go east
. The basilisk follows your sound, and you can’t return to the Chamber.
With inspect
you notice that there’s a little stone in the ground behind you. throw the stone
to distract the basilisk. Now you can go back to the Chamber with go west
.
But the terrible basilisk is following you, so you have to find a sword or something else to kill it! In the Chamber there is the sorting hat and look inside the hat
to find what you need.
Now kill the basilisk with the gryffindor sword
!
The problems aren’t over! Now you have to destroy Tom Riddle for ever (or better, until next film). The basilisk hurts you, and a tooth of the basilisk remains on the ground. To kill Tom you have to destroy the diary with the tooth
.