Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[C#, PHP, R38] Project Aurora

Status
Not open for further replies.
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

I'm not a fan of your index. Maybe you should re-design it a bit more than that.

It's actually an index from PHPRetro (and I think this was used in v31 on Habbo as well). But I could use a difference index or make a switch so you can switch between indexes.
 
Joined
Aug 10, 2011
Messages
7,401
Reaction score
3,299
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

Or should I rewrite it (which means it takes a longer time to get to the current point but most likely makes it go faster after that)

No it won't. Refactoring is almost always guaranteed to be faster than starting from scratch again in order to get up to a certain standard.
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

I'm not a fan of your index. Maybe you should re-design it a bit more than that.

It's an official index that Habbo made, this existed around the time of when R38 was live on Habbo, actually. :eek:tt1:



Also I'd appreciate if you gave reasons why you're not a fan of the index rather than just saying "I don't like it" without any reason to back up your claim.
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

Any examples on how he is making it cleaner? Because cleaner is quite subjective.

Well, cleaner than the source was isn't too hard. All jokes aside, I'll ask him about it (or he will explain it if he sees this). I understand where you're coming from, I just don't know what spreed had in mind for it.
 
Joined
Jun 23, 2010
Messages
2,318
Reaction score
2,195
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

Well, cleaner than the source was isn't too hard. All jokes aside, I'll ask him about it (or he will explain it if he sees this). I understand where you're coming from, I just don't know what spreed had in mind for it.

Who's development is this, spreedblood's or yours? I'm quite confused at the moment. It always seems like he is doing something while you sort of Ducking it up... Why do you not know what he's doing?!
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

Who's development is this, spreedblood's or yours? I'm quite confused at the moment. It always seems like he is doing something while you sort of Ducking it up... Why do you not know what he's doing?!

"sort of Ducking it up"

In what way Ducking it up? And I do know he's cleaning up the source and switching from Autofac to Microsoft Extensions. I just don't know ALL his ideas. And it's our development, in fact he did quit first but he promised me to "help me" "rewrite" it (AKA clean it up). I'll surely do my parts on the stuff I wrote to clean it up.

After that, I'll finish up the furni interactions and most likely start fixing the public rooms which are f*cked up for some reason.
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

and most likely start fixing the public rooms which are f*cked up for some reason.

Lol, wasn't I to Aurora and then they mysteriously disappeared? :eek:tt1:
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

Sorry for the lack of updates again. I'm not 100% sure when and if the rewrite is going to be done by Spreed. But anyways, I started writing a better source for my multi-version shockwave server (which will support v7, v9 and hopefully v13 too, maybe more versions will also be supported later).

I've looked a bit in the Lingo of v7 and saw some interesting stuff. Made it easier to figure out the navigator node structure (this structure is 100% figured out by me, I take no credits. I might post the structure eventually).

6Ow1XGZ - [C#, PHP, R38] Project Aurora - RaGEZONE Forums


This isn't done in my own emulator, this was done in ION just to figure out the structure before I actually rewrote my Shockwave server just to make it easier

(don't think the R38 is abandoned, I've got some ideas for it. Also keep in mind the oldskool client was planned in the beginning anyways and is still part of this project).

Snippet of the server:

PHP:
using System;
using System.Data.Common;
using System.Threading.Tasks;
using Aurora.Database;

namespace Aurora.Game.Avatars
{
    public class AvatarDao
    {
        private readonly DatabaseConnection _databaseConnection;

        public AvatarDao(DatabaseConnection databaseConnection)
        {
            _databaseConnection = databaseConnection;
        }

        public async Task<Avatar> GetAvatarByName(string name)
        {
            Avatar avatar = null;

            await _databaseConnection.Select(
                "SELECT * FROM avatars WHERE name = [USER=1333344765]name[/USER] LIMIT 1",
                async (reader) =>
                {
                    if (await reader.ReadAsync())
                    {
                        avatar = new Avatar();
                        avatar.Fill(reader);
                    }
                },
                ( [USER=1333344765]name[/USER]", name));

            return avatar;
        }
    }
}

I'll give it a bit of time or I might rewrite the R38 on my own or just keep it the way it is. It works and should be stable anyways.
 

Attachments

You must be registered for see attachments list
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
Re: [V9] [R38] Aurora Emulator [C#] [DotNetty] [Log4net]

Since spreedblood officially told me he won't be working on R38 anymore, I've decided to give the source a big clean myself. From now on, I'll be the only one working on the R38. However, this doesn't change anything, the only thing that'll happen is a new source and some things completely rewritten (room map stuff as height poop wasn't done that great).

95% of the code from the old source can be reused in a way, I hope to have the emulator rewritten by the end of this month, maybe end of next month. After that and a few of the really game breaking bugs are fixed, a test hotel will come up (scheduled and written down so I won't forgot).

Last, the name Aurora Emulator will be changed to Project Aurora, Quackster please change the title of the topic to:

[C#, PHP, R38] Project Aurora

The focus of this thread will from now on only go towards R38. As soon as most/all of the R38 is done, a new thread will be made for oldskool, which for now won't be the main focus.
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
Database stuff will be rewritten too. The dao's will contain of a variable for the database "factory". That "factory" contains functions like "select", "insert", "update" etc. Example of how a select would be used:

PHP:
public async Task<Player> GetPlayerBySSO(string ssoTicket)
        {
            Player player = null;

            await _databaseFactory.Select(
                "SELECT * FROM players WHERE sso_ticket = @ssoTicket LIMIT 1",
                async (reader) =>
                {
                    if (await reader.ReadAsync())
                    {
                        player = new Player(reader);
                    }
                },
                ("@ssoTicket", ssoTicket));

            return player;
        }

(huge thanks to spreedblood for this idea)

Also, all message events will have the header in the event file rather than in the packet helper/library file. All message headers will automatically be added to the library if they implement IPacket. This means there's no possibility to make a packet file and test it only realizing you haven't added it to the list.

PHP:
class SSOTicketMessageEvent : IPacket
    {
        public int Header => 204;

        private readonly IPlayerController _playerController;

        public SSOTicketMessageEvent(IPlayerController playerController)
        {
            _playerController = playerController;
        }

        public async Task Handle(Session session, Event message)
        {
            string sso = message.GetString();

            Player player = await _playerController.GetPlayerBySSO(sso);

            if (player != null)
            {
                session.Player = player;

                session.QueueMessage(AuthenticationOKMessageComposer.Compose());
                session.Flush();
            }
            else
            {
                await session.Disconnect();
            }
        }
    }

PHP:
 public class PacketLibrary : IPacketLibrary
    {
        private readonly Dictionary<int, IPacket> _packetEvents;
        private readonly ILogger<PacketLibrary> _logger;

        public PacketLibrary(IEnumerable<IPacket> packetEvents, ILogger<PacketLibrary> logger)
        {
            _packetEvents = packetEvents.ToDictionary(packet => packet.Header, packet => packet);
            _logger = logger;
        }

        public async Task TryHandle(Event message, Session session)
        {
            if (_packetEvents.TryGetValue(message.Header, out IPacket packet))
            {
                await packet.Handle(session, message);
                _logger.LogInformation($"Handled packet event {packet.ToString()}");
            }
            else
            {
                _logger.LogWarning($"Unregistered packet event with header {message.Header} ({message.ToString()}");
            }
        }

        public static void AddPacketEvents(ServiceCollection serviceDescriptors)
        {
            foreach (Type type in Assembly.GetExecutingAssembly().GetTypes())
            {
                if (type.GetInterfaces().Contains(typeof(IPacket)))
                {
                    serviceDescriptors.AddSingleton(typeof(IPacket), type);
                }
            }
        }
    }

(keep in mind, 204 is the shockwave header for SSO, I might add support for multiple headers later)
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
Okay, this is gonna be a long post 99% won't care about but maybe, JUST MAYBE for the 1% I'm still gonna post it. No, this development isn't going to be canceled or slowed down, but I got a few things to mention.

Things in my private life... well, they are hard. I discovered something which is hard to deal with and it just distracts me a lot, not only from development but also from work sometimes. Then, there is work, which I also have (yeah, need to earn money for poop and what not). Besides that, I try to write a story and play games as well. I was excited for a rewrite but in the end I don't think I have the time for it, plus it would be much of a time waste. I decided to continue on the old source and try to improve it as much as I can.

The development was going to be a R38 server working on both Shockwave and Flash, something that is still going on, with a custom CMS based on the old Habbo style from 2008-2011/12? The idea was to implement custom features in it and stuff, but this is completely scraped, so only the original features will be implemented. I'll look into all things, so the simple stuff such as navigator, rooms, chatting, items but also more advanced, "unnecessary" stuff like games and the Habbo NUX stuff, or whatever it's called in R38 and the guides, and MAYBE - if I can get camera to work like it did in earlier versions - camera as well.

After that, or in the meantime, I want to create something between v7 and v13, or mabye something that can support multiple versions, but I'm not entirely sure what. Ideas can always be implemented, I could look into custom features if people want it.

Last, some updates on the old source:

NVxU36s - [C#, PHP, R38] Project Aurora - RaGEZONE Forums

Fi0Z0Ll - [C#, PHP, R38] Project Aurora - RaGEZONE Forums


Also, unlike Flash, achievements work correctly in Shockwave...:

GNvnBRj - [C#, PHP, R38] Project Aurora - RaGEZONE Forums

Lm7eCB6 - [C#, PHP, R38] Project Aurora - RaGEZONE Forums


I'll keep ya updated folks and hopefully a public BETA will happen within 2 months.
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Jul 2, 2016
Messages
98
Reaction score
40
A question Navine, why do not you use v31? has the joystick and everything that r38 has
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
So, I haven't quit the development. I've been dealing with a lot in my life. Depression, sadness and lack of motivation for anything. I've surely grown to be a different person and I couldn't find any motivation to work on the development no more. That, added with the fact spreedblood and I had a disagreement and I guess we kind of both got pissed off on each other and he already left the development team and the source is so, terrible because of the wrong way things were done, I just had no motivation.

I guess I could do a bit of story time no one cares about. I discovered I'm transgender (this is the first time I'm publicly putting this on a forum) and due to the stronger feelings I got and stuff it just kind of ruined my mood most of the time (until I started to live better with it). My intentions were to come back to the development but with work and this besides it and other crappy things happening I just didn't. I tried doing multiple stuff: anything Habbo related, trying to create a better source, nothing worked. The old source I still have, so nothing is lost.

Now, I'm here because it's the end of 2018 (which, in case anybody even cares, ended up terribly), I had the worst week last week but it also made me realize that sometimes fate can be harsh. I remembered how things were before, when I wasn't worrying about anything. I decided to no longer work on "Project Aurora", but to recall it in something new, something which says I made a new start. Whether the source and stuff will change or not is the question, but for now the only change is the name, which will be a "reference" to the new start I make. Not only personally, not only mentally but also here on RaGEZONE.

Feel free to PM me or add my Discord for any questions or if you just want to say something (NO, don't be rude). With the new start I want to make, I want to reopen a thread. So I ask a moderator to kindly close this thread and I'll try to rewrite one after Christmas.

Last, the new start will be done with me, but me alone. spreedblood won't be a part of it. I kindly receive all kind of offers for help, but I will just as kindly reject them. Tips are welcome, but I don't ask anyone to actually write code. Giving tips on code I made how I can make it better is appreciated though.

Lastly, I wanna thank Quackster a lot for being an awesome dude on Discord and sending me the some stuff which helps out my development a lot and spreedblood for the hard work he put into Aurora and even with all the things happened it didn't change my appreciation for this lad.

Also I thank everybody for reading this and if you dislike this, then just leave.
 
Status
Not open for further replies.
Back
Top