Looking back at my previous blog post, I realize how much different I'm feeling right now. I was so depressed and feeling lost, but now I feel very confident again. The importance of applying the baby steps principle proves itself over and over again. That's exactly what I did. I didn't jump into the Omega Race code to modify it at all. All I did at first, just organize it into C# regions to separate the fields, the properties, the constructors, the public/private/protected methods, and the XNA Update() and Draw() methods. This step although it was very trivial made me feel much better, and helped me tremendously when I actually started modifying and refactoring the code.
Now the game is working in System Link networking mode, I still have to do this prediction and dead-reckoning. I hope it won't take much time as I really don't have much at all. There're lots of things that need to be done, the PDF documentations of each assignment, studying for the final exam, and the HUGE animation system for GAM 575 ... Thinking about this only makes me feel too tired!
GAM490: Game Networking - Ahmed Fakhry
Wednesday, May 22, 2013
Saturday, May 11, 2013
Feeling Overwhelmed!
Over the past couple of weeks, I dedicated myself to the FBX converter that I was writing for my other class I'm currently taking. That task wasn't easy or fun at all, although honestly I felt very satisfied when I completed it. It just depleted a lot of my energy. Nevertheless it's not time to rest yet. Now that I woke up from that FBX bad dream, I found myself having to:
I have two problems here. First, the fear of the UNKNOWN; that is, I don't know what I should do to make that game data driven and ready for multiplayer. I have already studied XNA network-related stuff and took some good notes. Now it's time to put them into practice, but how? Where should I start? I have no idea. I probably should just start and I will then be able to figure it out, but I'm really feeling exhausted.
The second problem is that the FBX nightmare isn't over yet. It's just going to get worse when we start to extract animation data. This will mean more exhaustion!
This next month will probably be very hard. I think need the baby-steps principle now.
- refactor a game that I didn't write.
- make that game data driven.
- convert the game into multiplayer.
- start the preparation for the research paper required for this class.
I have two problems here. First, the fear of the UNKNOWN; that is, I don't know what I should do to make that game data driven and ready for multiplayer. I have already studied XNA network-related stuff and took some good notes. Now it's time to put them into practice, but how? Where should I start? I have no idea. I probably should just start and I will then be able to figure it out, but I'm really feeling exhausted.
The second problem is that the FBX nightmare isn't over yet. It's just going to get worse when we start to extract animation data. This will mean more exhaustion!
This next month will probably be very hard. I think need the baby-steps principle now.
Sunday, April 28, 2013
C#, I Missed You!
My favorite programming languages are
C++ and C#. I have been doing a lot of C++ lately, that returning
back to C# made me feel a little weird. It definitely feels too easy,
to the point that makes you doubt yourself sometimes. It's a lovely
language, and Microsoft has put a lot of effort in it. It's very
cleanly integrated with Visual Studio to the point that you feel
you're not typing a lot and it's almost impossible to make mistakes
because it keeps correcting you all the time. I wish that Visual
Studio does this as cleverly for C++.
I'm done with the Data Driven
assignment. I liked it very much. The idea of making your code very
generic that it responds correctly to whatever data input it receives
is amazing. This was a great preparation for the multiplayer game.
The input could be read from a network or a file and the program will
respond accordingly.
Sunday, April 21, 2013
TCP/UDP Client/Server
This last assignment reinforced some of my beliefs that I have about software development.
The Importance of Standardization
While studying the Winsockets API, I was excited and relieved. Since the API follows the BSD standard, it is likely to be very easy to port to other platforms with no or minor changes. This is really good for me, as I intend to a lot of Linux development in the future.
The Importance of Good Documentation
I have the admit, although I was happy that the API followed a standard, it wasn't the most elegant API I've seen. In fact, it's not elegant at all, and in some cases not very readable. What really helped me here was the good documentation, provided on MSDNA and on the book. Without that I would have never been able to complete the assignment.
The Software Engineer is the Architect
The assignment had some particular requirements. How those requirements are achieved was a design decision. For example, I was free to pick the format of some special packets, like the header packet or the acknowledgement packet. Software engineers encounter this situation all the time, and I think it's Ok to make these design decisions as long as they're for internal things that are not supposed to inter-operate with the outside world to worry about standards.
The Beauty of Abstraction
The OS abstracted those layers of the TCP/IP model other than the application layer. All I had to worry about is the design and implementation of the client/server applications using the abstractions provided by the OS. Other than that, magic happens.
The Importance of Standardization
While studying the Winsockets API, I was excited and relieved. Since the API follows the BSD standard, it is likely to be very easy to port to other platforms with no or minor changes. This is really good for me, as I intend to a lot of Linux development in the future.
The Importance of Good Documentation
I have the admit, although I was happy that the API followed a standard, it wasn't the most elegant API I've seen. In fact, it's not elegant at all, and in some cases not very readable. What really helped me here was the good documentation, provided on MSDNA and on the book. Without that I would have never been able to complete the assignment.
The Software Engineer is the Architect
The assignment had some particular requirements. How those requirements are achieved was a design decision. For example, I was free to pick the format of some special packets, like the header packet or the acknowledgement packet. Software engineers encounter this situation all the time, and I think it's Ok to make these design decisions as long as they're for internal things that are not supposed to inter-operate with the outside world to worry about standards.
The Beauty of Abstraction
The OS abstracted those layers of the TCP/IP model other than the application layer. All I had to worry about is the design and implementation of the client/server applications using the abstractions provided by the OS. Other than that, magic happens.
Tuesday, April 9, 2013
Lagging Behind A little
Being in San Francisco over the weekend caused me to lag behind a little. I have some catching up to do in the reading assignment and also in my other class that I'm taking. Hopefully I'll be back on track as soon as possible.
I'm glad that we're using the forums! I just found out over there that it is mandatory to submit the "cleanMe.bat" file. Without the forums, I would have never found out about it, and I would have lost some grades for that.
I'm really excited to learn about serialization, and deserialization. It was also great to revise the alignment and padding stuff. Great class so far!
I'm glad that we're using the forums! I just found out over there that it is mandatory to submit the "cleanMe.bat" file. Without the forums, I would have never found out about it, and I would have lost some grades for that.
I'm really excited to learn about serialization, and deserialization. It was also great to revise the alignment and padding stuff. Great class so far!
Wednesday, April 3, 2013
First Lecture Thoughts
Being present in the classroom during the first lecture was for me like taking a long trip down memory lane. Back in 2006 I took a CCNA course, and we studied a lot about networking in my undergrad. The first lecture reminded me of how much I used to like that stuff while I was studying it as an undergrad student before graduating in 2006. It also reminded me of how much I started to hate that same stuff after I started working as a telecom engineer after graduation.
My previous job gave the utmost frustration. It is why I fell in love with software development as a refuge to run away to from that frustration, and it is why I'm currently here. The reason behind this frustration was that back in college we studied a lot of things, mathematics, electronics, antenna theories, propagation theories, all the analog and digital communication systems, and everything we studied was very much details and proofs and equations and everything. We used to use MATLAB to write simulations of a whole communications system, starting at the base-band data, passing by modulation, channel coding (for error correction), the communication channel itself (simulating different types of noise environments), and then ending at the receiving end where the demodulation and error correction take place. I was having fun, because it used to feel like I'm an actual engineer.
But once I started working at a 3G cell-phone network operator (or carrier as it's called here in the US) and I was shocked. None of that knowledge that I acquired at college is needed anymore. All we had to do is to operate the network and enhance our network's coverage all over the country. I felt I'm not an engineer anymore. Unfortunately, most of the knowledge I acquired as an undergrad started to get rusty! What a great loss that I keep regretting everyday.
I'm so glad now that I will get to remember a lot of the stuff I used to know, but from a different perspective. From the only perspective that I currently love and care about, that is the perspective of a programmer.
Looking forward to get deeper into the subject.
My previous job gave the utmost frustration. It is why I fell in love with software development as a refuge to run away to from that frustration, and it is why I'm currently here. The reason behind this frustration was that back in college we studied a lot of things, mathematics, electronics, antenna theories, propagation theories, all the analog and digital communication systems, and everything we studied was very much details and proofs and equations and everything. We used to use MATLAB to write simulations of a whole communications system, starting at the base-band data, passing by modulation, channel coding (for error correction), the communication channel itself (simulating different types of noise environments), and then ending at the receiving end where the demodulation and error correction take place. I was having fun, because it used to feel like I'm an actual engineer.
But once I started working at a 3G cell-phone network operator (or carrier as it's called here in the US) and I was shocked. None of that knowledge that I acquired at college is needed anymore. All we had to do is to operate the network and enhance our network's coverage all over the country. I felt I'm not an engineer anymore. Unfortunately, most of the knowledge I acquired as an undergrad started to get rusty! What a great loss that I keep regretting everyday.
I'm so glad now that I will get to remember a lot of the stuff I used to know, but from a different perspective. From the only perspective that I currently love and care about, that is the perspective of a programmer.
Looking forward to get deeper into the subject.
Subscribe to:
Posts (Atom)