Skip to main content

Dev Update #3 - Movement to C#

· One min read
NoFr1ends
Founder of Quantum Core

Welcome to the third development update of QuantumCore.

The team behind QuantumCore has been silent for the last couple of months. The reasons behind that are multiple, one being the current and ongoing pandemic and thereof changed situations in the team.

However, the main reason was because we decided to restart the QuantumCore project. With the current C++ project we were able to get a first impression of what the work is and which direction we should take going forward.

We decided that the best idea would be to switch to a more "modern" language which provides us more functionality to allow the development to happen in faster iterations. This also makes it easier for interested people to join the QuantumCore project team.

As of this announcement the QuantumCore C++ source will be marked as deprecated and will be archived, but remain available here. The C# version of QuantumCore will be available by now on GitLab. The team is still working on porting the current progress to C#.

The goal of this project remains to be a cross platform available open source server reimplementation, that's why we use .NET Core.

Dev Update #2

· One min read
NoFr1ends
Founder of Quantum Core

Welcome to the second development update of QuantumCore.

The described changes reflect the changes between the 6th May (13e01749) and 18th May (d9a795bf).

Note: This blog post was not published before the 24th November.

Attacking

The main change of this development update is the implementation of basic attacking (Merged !20). Currently we didn't implemented 100% attack nor defense calculation, but basic functionality is in place.

  • Monsters are chasing you
  • Monsters are attacking you when they are in range
  • Groups will target the player after first attack
  • Monsters are targeting the player which dealt the most damage
  • The player is able to die and respawn (town is currently respawning here too)

Look at the short video showing fighting, chasing and dying.

// removed

Minor changes

  • Improvement to multithreaded implementation of networking (Merged !17)
  • Better error handling in network thread (Merged !17)
  • Randomize handshake (Closes #30, merged !19)
  • Source Groups for Visual Studio

New maintainer

We like to welcome masodikbela to the team of maintainers.

Dev Update #1

· 3 min read
NoFr1ends
Founder of Quantum Core

Welcome to the first development update of Quantum Core.

The described changes reflect the changes between the 25th April and 5th May.

Players

In this week we have implemented player movement. For this we have updated our QuadTree implementation to support faster searches and update. The current implementation works better, however it still has some issues with many players (starting at around 400) close by. Further improvements are planned and some are already work in progress.

Mobs

Quantum Core is now capable of spawning mob and processing basic mob AI like movements. (Also merges !14 and closes #25)

The core loads a generic 40k mob_proto as well as MSA animations for movement.

Here is a small video showcasing the mobs in (map):

// Removed

If you'd like to view the example files, check the following Sample data directory.

Relicensing

The code has been relicensed to Mozilla Public License. (Merges !4 and closes #31)

The reasons why we have chosen MPL are multiple:

  • You have to redistribute the source code if you modified QC and redistribute the binary file
  • We do not want anyone to make money with QC itself (feel free to sell plugins though)
  • If you modify QC and do not share the binary you don't have to share the source.
  • GPLv3 didn't really allow plugins (they would have been GPLv3 too)
  • MPL allows you write plugins and sell these commercially

A big step in switching to MPL had been finding an alternative to the LZO library, luckly for us lzokay was the right alternative for us.

Another small thing was rewriting the XTEA code, which ended up being replacable with a Wikipedia public domain one.

Simulator

The simulator's goal is to accurately reproduce (or simulate) player behaviours as close as possible. It will help us to test quantum core's performance and test all kind of features accessible for normal players. In its final form it will be possible to write different test scenarios, from mass connecting to different cores simulating stress to walking around the map, attacking mobs, using items, skills, solving dungeons or quests, pvping or possibly even participating in guild wars. It is meant to use this tool as spawning massive ammount of instances, like 1-2-3k to simulate real life scenarios, helping us indentifying bottlenecks and performance issues. In its current state it can only enter the game and send some chat messages welcoming new entities in its view range.

Here is a small demo of the simulator in action:

// Removed

Thanks to masodikbela for his work on the simulator.

Minor changes

  • logout, quit and return to character are ready
  • Shiny new documentation (Closes #22)
  • Write buffer now prevents constant memory allocation (Merged !5)
  • Concurrency issues with writeBuffer are fixed (Merged !7)
  • Fixes convention and formatting issues (Merged !3 and closes #26)
  • The core now checks proto and animation before loading (Merged!9)
  • Fixes possible memory leak in cryptation (Merged !11)
  • Workaround for network 100ms sleep after cryptation (Merged !12)
  • Packet handling now has it's own thread (Closes #19)
  • Fixed concurrent accesses for different objects (Closes #24 and #23)

New contributors

Since the start of making QuantumCore public we got first contributions from the following persons:

Thanks for your contributions!