Author Topic: Development Progress - February 2015  (Read 4568 times)

0 Members and 1 Guest are viewing this topic.

Offline Rod-Serling (OP)

  • Pulsar 4x Dev
  • Warrant Officer, Class 1
  • *
  • Posts: 89
  • Thanked: 4 times
Development Progress - February 2015
« on: February 28, 2015, 09:12:14 PM »
GitHub Pulse summary for January 28 - February 28

Excluding merges, 6 authors have pushed 226 commits to master and 391 commits to all branches. On master, 134 files have changed and there have been 18,506 additions and 15,899 deletions.

We're still pushing!
Since the last Development Progress update, we've added 2 Devs (Snopy Dogy, and se5a).

Quote from: End User
But wait Rod, those people were already working on it!
Not really. Most of us had gone into hiding, and had in general abandoned development. But we're all back now, and working hard!
To show you how hard we've been working, here's a pretty graph courtesy of GitHub. Click for full size.

The dotted line is February 1st. The graph shows number of "Commits" or changes that we pushed to our Source Control.

Quote from: End User
So Alpha 4 must be right around the corner right?
Actually no, we've made a lot of progress but it hasn't culminated in a lot of gameplay development.

Quote from: End User
No gameplay development? What have you been doing all this time?
Mostly drinking coke and playing Skyrim.

But seriously, here's a basic list of things we've done since last time:
  • Jump Engines Implemented
  • Jump Sickness Implemented
  • Made a really bad Windows Installer
  • Large number of JumpPoint bugfixes
  • UI Minimum Resolution tweaks (1024x768)
  • Complete overhaul of System Generation
  • Complete overhaul of Orbit calculations
  • Complete overhaul of Atmospheres
  • Backend Shipyard work
  • Several Orders fixes and implementations

So how does this get us closer to our Alpha 4 goal of a single player empire that's... functional?

Well our remaining goals for Alpha 4, that have not been realized yet include the following:
  • Building Ships
  • Colonization
  • Mineral Generation on New Planets
  • UI support for all of this.

Quote from: End User
So you'll be done with it in like, 2 days right Rod?
No, sorry. I'm sure I'm missing stuff and none of this is actually our main developmental focus.

As we came back into development of Pulsar, we found that as we continued to implement more features, we had little actual foundation to stand on.
Most of our work the past month has not been on implementing new features, but simply creating a foundation for features to stand on more reliably.

New System Generation and Orbit Calculation code is all a direct result of this work. Our old models were limiting us, and frankly, were a bit slow. Go download Alpha 3 and try to Generate 1000 systems from the "Gen Galaxy" SM option in the System Information tab. Let me know when it finishes. I stopped mine after 10 minutes because I was trying to run a profiler on it and it was making a huge file.

New System Generation, and Orbit Calculation code takes 4.3 seconds on my (fairly powerful) computer to generate 1000 systems.

But now we're looking at the larger game library, and we're looking at a fairly major overhaul of the architecture of the game. We're looking at multithreading and optimizations the whole way though, but our main focus is on code maintainability. Improving our code maintainability is a large task that unfortunately does not provide new shiny features. It does provide the framework and support to make those new shiny features much quickly and more reliably once we do start to focus on them however. Alpha 4 might not happen in March. I hope it does, and I think we can, but we have to stay realistic. Pulsar is honestly starting to come along in a way that it honestly simply hasn't before. I have high hopes for Pulsar, and I really want to play Pulsar. Donate to my "Keep Rod fueled with Coca-Cola" fund* and one day, we'll play it together.

Fair winds and following seas, my fellow space-addicts.

*"Keep Rod fueled with Coca-Cola" Fund only accepts kind words of encouragement, European donations require additional VAT tax on all kind words.
« Last Edit: February 28, 2015, 09:38:27 PM by Rod-Serling »
This post is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 

Offline se5a

  • Lt. Commander
  • ********
  • Posts: 288
  • Thanked: 30 times
Re: Development Progress - February 2015
« Reply #1 on: February 28, 2015, 09:26:59 PM »
Progress!

maybe not too visible on the surface, but boiling away in the depths.

if you can't see the dotted line, it's because the graphic is cut off, make your browser window wider. if you've got enough pixels on your screen.
or you can see it at the top of this page: https://github.com/Pulsar4xDevs/Pulsar4x/graphs/contributors
looks like Rod fixed it.
 

Offline alex_brunius

  • Vice Admiral
  • **********
  • Posts: 1240
  • Thanked: 153 times
Re: Development Progress - February 2015
« Reply #2 on: March 02, 2015, 07:58:49 AM »
Great job!

And a very good idea to post a monthly update log with what has been accomplished, both to motivate the team, let us know you are still alive and also to attract new contributors!
 

Offline misora

  • Warrant Officer, Class 1
  • *****
  • m
  • Posts: 94
  • Thanked: 5 times
Re: Development Progress - February 2015
« Reply #3 on: March 02, 2015, 09:23:31 AM »
I have to say that's some amazing progress right there, I have high hopes for this, and great job!
 

Offline Witty

  • Chief Petty Officer
  • ***
  • Posts: 34
  • Thanked: 1 times
Re: Development Progress - February 2015
« Reply #4 on: March 02, 2015, 06:19:55 PM »
I'm happy to see that things are going so well. Most of these remakes tend to die in the water over time, but I have my optimism for this one.
 

Offline ardem

  • Rear Admiral
  • **********
  • a
  • Posts: 814
  • Thanked: 44 times
Re: Development Progress - February 2015
« Reply #5 on: March 02, 2015, 10:08:50 PM »
Great news on your progress.

Donating the word "Awesomeness" to your encouragement pile

 

Offline chrislocke2000

  • Captain
  • **********
  • c
  • Posts: 544
  • Thanked: 39 times
Re: Development Progress - February 2015
« Reply #6 on: March 17, 2015, 09:14:34 AM »
Great to hear this is gaining some momentum again, look forward to seeing the March update
 

Offline Hydrofoil

  • Sub-Lieutenant
  • ******
  • H
  • Posts: 123
  • Thanked: 2 times
Re: Development Progress - February 2015
« Reply #7 on: March 23, 2015, 11:08:06 AM »

But now we're looking at the larger game library, and we're looking at a fairly major overhaul of the architecture of the game. We're looking at multithreading and optimizations the whole way though, but our main focus is on code maintainability. Improving our code maintainability is a large task that unfortunately does not provide new shiny features. It does provide the framework and support to make those new shiny features much quickly and more reliably once we do start to focus on them however. Alpha 4 might not happen in March. I hope it does, and I think we can, but we have to stay realistic. Pulsar is honestly starting to come along in a way that it honestly simply hasn't before. I have high hopes for Pulsar, and I really want to play Pulsar. Donate to my "Keep Rod fueled with Coca-Cola" fund* and one day, we'll play it together.


And this gives me the greatestof joys!

The foundation of any professional software is the maintainability of code ensuring that you can even read what you coded yesterday can go along way to actually speeding up the development process in the long run. Good choice on concentrating on the foundations of Pulsar and im glad to see your not thinking about how multi threading can be put in that stuff can be a right bitch! Kudos and i only wish i had more time to help you guys out. (but first id have to learn C++, eh maybe over the summer)
 

Offline se5a

  • Lt. Commander
  • ********
  • Posts: 288
  • Thanked: 30 times
Re: Development Progress - February 2015
« Reply #8 on: March 29, 2015, 09:05:18 PM »
C# actually, which is a bit easier than C++

unfortunately we stalled a bit over the last two weeks, mostly we were busy with real life jobs and unable to get together and hash out (in some cases argue/fight) about some of the key structural points.  I think we're starting to pick back up on that side of things though. it's ended up being a bit trickier than we anticipated to get the foundation down, we've got that sorted now though, so we're starting to build the walls as it were.
 

Offline palu

  • Petty Officer
  • **
  • p
  • Posts: 16
Re: Development Progress - February 2015
« Reply #9 on: March 30, 2015, 01:02:27 PM »
What are the ECS-Switchover and Shipyard-Frontend-Finish branches?
 

Offline se5a

  • Lt. Commander
  • ********
  • Posts: 288
  • Thanked: 30 times
Re: Development Progress - February 2015
« Reply #10 on: March 30, 2015, 02:05:26 PM »
Ecs-swtchover is the new architecture we're working on.  Shipyard branch is the Shipyard work.  We create a new branch when we're working on a specific future,  and when done it gets merged into main after a review by at least one other dev.
 

Offline Rod-Serling (OP)

  • Pulsar 4x Dev
  • Warrant Officer, Class 1
  • *
  • Posts: 89
  • Thanked: 4 times
Re: Development Progress - February 2015
« Reply #11 on: March 30, 2015, 03:50:23 PM »
What are the ECS-Switchover and Shipyard-Frontend-Finish branches?

To expand on what se5a said about the ECS-Switchover branch...

The current master branch uses a fairly old-style object oriented approach to the game design. It has led to several extremely bloated files and god classes. As part of the "Foundation" work that we've been laying, we're switching from the OOP approach, to a data-driven ECS approach.

ECS stands for an Entity Component System. In Object Oriented Programming, you use inheritance heavily to define an object.

For example, a TaskGroup is derived from OrbitalEntity, which is derived form StarSystemEntity, which is derived from GameEntity.

Each level determines certain behaviors. GameEntity lays the foundation by assigning a name. StarSystemEntity expands on GameEntity and adds a position aspect. OrbitalEntity expands on StarSystemEntity and adds a Orbital aspect. TaskGroup expands on OrbitalEntity and provides the remaining functionality.

In an ECS, you use composition instead of inheritance. A Entity is a simple ID number (signed int). What defines what the entity can do is what components are part of that entity. A entity representing a taskgroup will have an OrbitalComponent, a PositionComponent, and some type of TaskGroupComponent. This allows us to create new types of objects quickly and dynamically. Components however, are simply data. They contain no logic.

Systems are the logic. When we advance time, we run these systems. In an OOP approach, we might say TaskGroupA.Update(), then TaskGroupB.Update(). With the ECS, we instead do OrbitSystem.Update(), which updates the orbits for ALL entities that have the required components (data).

Now, in order to avoid confusion (When you say component, are you talking about a ship component (jumpdrive?), or a ship component (PositionComponent?)) we've renamed the "Component" part of the ECS to "DataBlobs" as they are just blobs of data. So a OrbitDataBlob contains all the DATA (again, not the logic) for the orbit of the specified entity. We've also renamed the "System" (logic) of the ECS to "Processor". So an OrbitProcessor takes OrbitDataBlobs to update PositionDataBlobs of entities. Make sense?

We're also data-driving the ECS. The end result of the data-driven aspect is that it will be much more moddable. Instead of stuff being hardcoded into the class of an object, we can hotload what components a specific entity type has, and what data it has.

Another benefit of the ECS is that the internal structure of the data is a database. Components are database tables, and the Entity (which again, is a simple, unique int) is the key value. Workin with the internal entities of an ECS is much like working with a database. You basically do SELECT FROM OrbitDataBlobsTable WHERE EntityID EQUALS 7 and you get the orbitDataBlob for that entity. This makes serialization/serialization a breeze. The actual call in code exactly is this:
Code: [Select]
OrbitDB entityOrbitInfo = EntityManager.GetDataBlob<OrbitDB>(entityID);

As for the Shipyard-Frontend-Finish, this branch is related to Nathan's work on the Shipyard UI, and as se5a said, no incomplete features are ever added to master. Once he's done he'll make a pull request to the master branch, and another dev will review it, and merge it if it looks good, or bring up any possible issues.
« Last Edit: March 30, 2015, 03:55:35 PM by Rod-Serling »
This post is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 

Offline se5a

  • Lt. Commander
  • ********
  • Posts: 288
  • Thanked: 30 times
Re: Development Progress - February 2015
« Reply #12 on: March 31, 2015, 02:06:19 AM »
Also, don't hesitate to join #Pulsar4x on freenode.
there's normally one of us in there, though we might not answer right away.
« Last Edit: March 31, 2015, 02:26:19 AM by se5a »