Project Update #11 - Character Creation Screen

The latest sitrep on PSForever.
User avatar
Chord
Site Admin
Posts: 162
Joined: Wed Oct 14, 2015 4:31 pm
Contact:

Project Update #11 - Character Creation Screen

Postby Chord » Sat Jun 11, 2016 2:46 pm

Hello everyone.

As you can see, the forums are pretty quiet. This is because most of the chatter has moved to the Discord. I'm pretty active in the #psforever-code channel trying to dump my thoughts and current progress. Hop on if you want to chat regarding development.

I don't have any real general announcements beyond the good news that the login server is completed enough for me to move on to the world server.

Development Progress
tl;dr - We can now login and create characters.

We've hit some new milestones in the server development. We are now able to keep the PlanetSide client from disconnecting after a few minutes. This was fixed by figuring out the "Unknown{7,8}" packet pair. I don't know what this does, but I handle it enough to keep things from breaking.

The next challenge was to handle logins to the PlanetSide world server. This required more reverse engineering and head scratching to get right. Using the GameCapture tool and previous captures, I was able to figure out the "magic" packets required for the client to enter in to the character creation screen. It's not 100%, but see below for a screenshot showing me at the character select.

From here I began to handle some important character creation packets. This included character selection (hitting the "play" button), character deletion, and new character creation. I have now handled all of these packets just enough to allow the client to not fault.

My immediate next goal is to figure out the scary "ObjectCreateMessage". This is a scary packet because of how complicated it is.
I would consider this a "God" packet because it's responsible for so much. It is sent by the PlanetSide game server for EVERY game object that is created on the client. This includes your avatar, every inventory item, every terminal, every weapon, every vehicle, etc. It's "polymorphic" in that there are different ways of decoding it depending on what game object it represents! I have to make sense of this soup before I can start making my server create object on the server. The coolest part about this packet is once I understand it, I can spawn in any type of object on command. This means even strange objects or custom weapons!

Once I figure out this packet, I want to get the client to enter a map. It's not currently working because I believe I'm missing some key packets (such as the avatar creation packet. you need to spawn in to something...).

Initial efforts of getting past the server selection screen

Image

========*========*========*========*========*========*========*========*========*========*========

A hacked up character creation screen. It's faked because I was just replaying packets to get the client to create some characters.

Image

========*========*========*========*========*========*========*========*========*========*========

The furthest I've gotten so far. The client just hangs here.

Image

Development Log
Here is the log of commits since my last status update. Lots of progress has been made! In total there were 45 commits with a total change of 58 files changed, 4074 insertions(+), 1586 deletions(-). Most of the development has been getting the critical world and login server packets reverse engineered and coded up. This takes a lot of time, but each packet adds new functionality.

You can see the full commit log on the project Github.

78ace06 2016-06-04 - Packet: ObjectCreateMessage
c83132f 2016-06-04 - Improve packet CharacterInfoMessage and char select
7af6f64 2016-06-04 - Rebump scodec-akka due to fix
63311e4 2016-06-04 - Fix old EmpireNeed name to PlanetSideEmpire
9f66602 2016-06-04 - Packet: ActionResultMessage
f6d8479 2016-06-04 - Packet: CharacterCreateRequestMessage
c18ec5c 2016-06-04 - Work around scodec-akka bug and remove old UDP packet
8b8194c 2016-06-04 - Packet: CharacterRequestMessage naming from RE
8ba34fe 2016-06-03 - Fix missing decoder in GamePacketOpcode
d4c414d 2016-06-03 - Packet: CharacterInfoMessage
50fb65a 2016-06-03 - Version bump scodec and specs2
372a88b 2016-06-03 - Packet: Improve sizeCodec for MultiPacketEx
7b82491 2016-06-03 - Packet: MultiPacketEx, CharacterRequestMessage
9a0ef28 2016-05-19 - Improve session router name for log output purposes
eb03372 2016-05-19 - Enable WorldSession to get to login screen using replay
5ed40e7 2016-05-19 - Fix LoginMessage and ConnectToWorldReqMsg token
f1fae83 2016-05-19 - Fixed enumeration bounds check bug
362e923 2016-05-19 - Reorganize control packet opcodes and add defaults
e8031f0 2016-05-19 - Packet: KeepAliveMessage and add all game packet opcodes
6b02d2f 2016-05-17 - Add doc to ConnectToWorldMessage about hostname
d27bd79 2016-05-17 - Made some hacks to get to 100% on the World login
3c07cc4 2016-05-14 - Correctly respond to ConnectToWorldRequestMessage
b210df9 2016-05-14 - Packet: ConnectToWorldRequestMessage
034dadc 2016-05-14 - Packet: ConnectToWorldMessage and fix VNL test
43a4031 2016-05-14 - Fix bad ServerType encoding and change server type
aa0b895 2016-05-14 - Discovered name for Unknown3 (ConnectToWorldRequestMessage)
11298c1 2016-05-14 - Stub out ControlSync to prevent client from leaving
6ea1d15 2016-05-14 - Packet: Unknown{7,8} -> ControlSync{,Resp}
4d52d65 2016-05-13 - Add fault tolerance to SessionRouter and it's children
10f54b7 2016-05-05 - Remove scroller and parametize UDP listener
cdf240c 2016-05-04 - Handle meta packet and return ack. server scroller
c7f70e3 2016-05-04 - Finish coding for SlottedMetaPacket and wrote test
ff4ea79 2016-05-03 - Organize packets in to their own packages
e41d0ac 2016-05-03 - Fix broken organization name in build.sbt
df1d222 2016-05-03 - Refactor package naming scheme and line endings (CRLF)
14e48d4 2016-05-03 - Improve copyright script perf and perserve LE
83da72e 2016-05-03 - Refactor all packet definitions out of PSPacket
f81d67f 2016-05-02 - Fix missing MDC Actor tell on session creation
e0ac823 2016-05-02 - Add GPLv3 licensing information
67e79e3 2016-05-01 - Make UdbListener listen on the host address (public)
bc87042 2016-05-01 - Fix line endings and add PSForever copyright
e299abb 2016-05-01 - Add SLF4J MDC session logging
2fc78f4 2016-05-01 - Add banner screenshot to README.md
1318ebd 2016-05-01 - New SLF4J logger log4s. ANSI colors
36d9f51 2016-04-30 - Revert change to LoginMessage tokenPath
[ PSForever admin and developer ]
PSForever Code | Capturing Packets | Community Discord
p0intman
Posts: 124
Joined: Sat Oct 17, 2015 8:02 pm

Re: Project Update #11 - Character Creation Screen

Postby p0intman » Sat Jun 11, 2016 8:45 pm

fucking awesome
ImageImage
Retired NC CR5, Cerberus Company
hyperion9710
Posts: 5
Joined: Sat Jun 18, 2016 8:59 am

Re: Project Update #11 - Character Creation Screen

Postby hyperion9710 » Sun Jun 19, 2016 11:51 pm

wow...... if you guys work like that, maybe can unlock core combat lol
Rabbit
Posts: 4
Joined: Wed Jun 22, 2016 3:21 am

Re: Project Update #11 - Character Creation Screen

Postby Rabbit » Wed Jun 22, 2016 5:18 pm

Fabulous :)
SS_Gaming
Posts: 6
Joined: Mon Jun 27, 2016 8:43 pm

Re: Project Update #11 - Character Creation Screen

Postby SS_Gaming » Mon Jun 27, 2016 9:06 pm

If you need any testers i am more then happy to, I had grown up playing Planetside 1. I would love to help with anything i can. (Just asking because i know some, what scripting language does the project use?)
User avatar
Chord
Site Admin
Posts: 162
Joined: Wed Oct 14, 2015 4:31 pm
Contact:

Re: Project Update #11 - Character Creation Screen

Postby Chord » Tue Jun 28, 2016 5:26 pm

SS_Gaming wrote:If you need any testers i am more then happy to, I had grown up playing Planetside 1. I would love to help with anything i can. (Just asking because i know some, what scripting language does the project use?)

Welcome to PSForever. We're not ready to test yet as there is still a lot of code that needs to be written to handle players entering and leaving. Plus, we still need to get at least one client loaded into a map.

The login and world servers will be coded in Scala, which is similar to Java, but much more powerful.
The project has a lot of code already. You can check it out on GitHub.

I dont have any tasks that I can hand out at the moment, but once there is more of a framework, things will get better.
[ PSForever admin and developer ]
PSForever Code | Capturing Packets | Community Discord
SS_Gaming
Posts: 6
Joined: Mon Jun 27, 2016 8:43 pm

Re: Project Update #11 - Character Creation Screen

Postby SS_Gaming » Wed Jun 29, 2016 5:01 pm

Alright, Let me know if you need help with testing. But yeah i'm not going to be much help with coding, i only know a Lua and a bit of C++. Haha i have never even heard of Scala code before now.

by the way i made a few logos for Planetside forever, just because i could.
SS_Gaming
Posts: 6
Joined: Mon Jun 27, 2016 8:43 pm

Re: Project Update #11 - Character Creation Screen

Postby SS_Gaming » Thu Jun 30, 2016 7:48 pm

Planetside 1 Farewell/memorial video i made https://www.youtube.com/watch?v=0xolw9Cj3xQ ...RIP PS1 :cry: (I Hope Planetside forever will be totally successful)
User avatar
Arise
Posts: 2
Joined: Fri Mar 11, 2016 4:32 pm

Re: Project Update #11 - Character Creation Screen

Postby Arise » Wed Jul 06, 2016 6:29 am

Wow! Its a good news! No skill with programming, but can help financially as I can. ;)
User avatar
Chord
Site Admin
Posts: 162
Joined: Wed Oct 14, 2015 4:31 pm
Contact:

Re: Project Update #11 - Character Creation Screen

Postby Chord » Sun Jul 10, 2016 5:07 pm

SS_Gaming wrote:Alright, Let me know if you need help with testing. But yeah i'm not going to be much help with coding, i only know a Lua and a bit of C++. Haha i have never even heard of Scala code before now.

by the way i made a few logos for Planetside forever, just because i could.

Can you post them any where?
[ PSForever admin and developer ]
PSForever Code | Capturing Packets | Community Discord

Return to “Project Updates”

Who is online

Users browsing this forum: No registered users and 1 guest