Diving into PathOfBuilding-PoE2: A Dev's Primer
PathOfBuildingCommunity/PathOfBuilding-PoE2
This GitHub repository is a placeholder for a future version of Path of Building (PoB) for Path of Exile 2. Currently, it contains no code, no functionality, and no working examples. It was created to reserve the name and act as a central hub for future development once more information about Path of Exile 2 becomes available.
From a software engineer's standpoint, this is not a project you can currently "use" or "implement." It's an empty shell, a promise of a project to come.
If and when the project becomes active, it could be incredibly useful for software engineers in a few ways
Understanding Complex Game Mechanics
PoB is an intricate tool that simulates complex interactions between skills, passive trees, gear, and more. Analyzing its codebase could teach you how to model and simulate complex, interdependent systems.
Performance Optimization
A PoB for PoE2 would need to handle a massive amount of data and perform calculations very quickly. The code would likely showcase techniques for performance optimization, such as memoization, efficient data structures, and multi-threading.
Front-end Development
The user interface for a PoB is a critical component. A software engineer could learn about building a responsive, data-rich UI using frameworks like WPF (Windows Presentation Foundation), which the current PoB is built on, or more modern web technologies if the new version goes in that direction.
Open-Source Collaboration
Contributing to a project like this is an excellent way to practice collaboration, code reviews, and working within an existing codebase. It’s a great way to build your portfolio and contribute to a project you're passionate about.
Since there's no code yet, the following is a speculative guide based on how you would typically get involved with a similar open-source project.
Fork the Repository
The first step would be to fork the PathOfBuildingCommunity/PathOfBuilding-PoE2 repository to your own GitHub account. This creates a personal copy where you can make changes.
Clone to Your Local Machine
Next, you'd clone your forked repository to your computer using Git.
git clone https://github.com/YOUR_GITHUB_USERNAME/PathOfBuilding-PoE2.git
Explore the Codebase
You'd then need to explore the project structure and dependencies. This is where you would look for a README.md file or documentation that explains how to set up the development environment.
Find an Issue to Work On
Look at the repository's Issues tab. Good open-source projects often have issues tagged as good first issue or help wanted to help newcomers get started.
Create a New Branch
Before you start coding, always create a new branch for your changes. This keeps your work organized and separate from the main branch.
git checkout -b feature/my-new-feature
Write and Test Your Code
Implement your changes and write tests to ensure they work correctly and don't break existing functionality.
Submit a Pull Request
Once your code is ready, you'd push your changes to your fork and open a Pull Request (PR) to the main repository. This is how you propose your changes to the project maintainers.
Let's imagine the project is active and written in C#, similar to the current PoB. Let's say you want to add a new unique item to the database.
Hypothetical Code Example
// In a file like "UniqueItems.cs"
public class UniqueItem
{
public string Name { get; set; }
public string BaseItem { get; set; }
public List<string> Mods { get; set; }
}
// In a file that loads item data
public static void LoadItemData()
{
var newUnique = new UniqueItem
{
Name = "Starforge",
BaseItem = "Infernal Sword",
Mods = new List<string>
{
"Adds 1 to 5 Physical Damage",
"30% increased Global Accuracy Rating",
"50% increased Melee Critical Strike Chance",
"Attacks with this weapon have a 25% chance to Blind enemies"
}
};
// Add this new unique item to the global list
Database.UniqueItems.Add(newUnique);
}
This is just a simple example of the kind of task you might do. A real-world change would be much more complex, involving data parsing, UI updates, and simulation logic.