Jump to content
  • Advertisement

cbenoi1

Member
  • Content count

    951
  • Joined

  • Last visited

Community Reputation

484 Neutral

About cbenoi1

  • Rank
    GDNet+
  1. cbenoi1

    Handle managers

    I have implemented such a system in the past. I have made a simpler version for gaming that I use from time to time on various projects. The core DB is using tags, and I use a multi-threaded task queue manager. What you have to do is load up a list of tasks and relations between them and run the task manager. Each thread pulls a task from the queue and executes it, putting back the results in specific pre-allocated tags. The TaskQ manager does a quick topological sort to find out which task(s) can be pull next, depending on what the task graph looks like at any point in time. A task can generate others; a typical example would be tessellation of geometry by subdivision until some curvature criteria is met. Once the last task is done, then all worker threads are put to sleep and the master thread can work on the results. I used this system to implement a simple raytracer and I started using it for an RTS game. I also extended it so that the database and task manager are shared across a cluster of networked machines; this allows your database to be much bigger than available memory, and for a bigger number of available worker threads to play with. One of the particularities of my implementation is that a DB item can be data or a function. So the relationship between two TaskQ elements can be a function that is evaluated at runtime. I currently use an enum because I have a fixed number of relation types; but it would be easy to have a function evaluated instead. Ping me if you want to discuss this in more details. -cb
  2. cbenoi1

    Job change

    The main issue when working from home while on a diet, is that the distance between your computer and the fridge is usually smaller than the distance between your office cubicle and the water fountain. congrats! -cb
  3. cbenoi1

    Going back to my /root

    We had the first major snow storm of the season last week. We got 42 cm, one tiny cm off the snow storm of the century that hit the Northeast in 1971. The day before I went to my sister-in-law's shop to get some good coffee (she owns a specialty grocery store) and get my old laptop, an old IBM Thinkpad i-1411. It's pretty old (circa 1998), but I used it to profusion during my MBA. Coupled with an also ran copy of SuSE 8.3, I spend the day of the storm converting my laptop from Win98 to Linux. There was nothing more productive to do; the phone line was dead, my internet connection was intermittent at best, and I was going nowhere anyway. I was able to put on the text-based interface but I never was able to start X in any shape or form. I probably missed a few drivers so I delved into the shell and started programming. Last time I wrote code on Unix was on August 5th, 1999. It felt wierd to fire up 'vi' and still feel at home. Without X running, it was pointless to do any graphics. So I toyed around a network 'chat' program to check the system out for a few hours. vi/make/gdb, Yeah! I felt that all those years with Microsoft Visual Studio I spent as a spoiled kid. I knew SuSE was not going to be up to par for my laptop, and I didn't want to pay for an upgrade. It took my a few days to download the last version of Debian 3.1 'Sarge' and install the latest goodies. As of last night I am a happy Linux machine owner. I still have some kinks to work out with the damn mouse, but it works rather well overall. This pretty much sums up what I'm going to do during the xmas break: Linux, C++, Kdevelop3, OpenGL, Subversion. No more management meetings, project evaluations, endless budget discussions, or marketing event schedule changes. Just programming. That's what I call a vacation... |8-}
  4. cbenoi1

    Colorful screwdrivers

    My wife and I have been in the same house the past 8 years now. Some of the rooms have not been repainted since we got in and the basement room is scheduled for a repaint before the new year. We repaint a room every 2 years on average and every time I forget something in the process. Last time, I forgot that little wooden stick to stir the paint. As I cursed myself, I noticed the screwdriver I used seconds ago to pry open the paint can. It was already in my good hand and looked suspiciously like a paint stirrer, and it was a convenient tool. Needless to say, I ended up with a colorful screwdriver. Ahhhh! The joy of painting... That brings me to the topic of the day. I have been debugging someone else's code for the past week. I'm talking professional game development studio stuff here. I don't normally type code as part of my day job, but this time lack of available resources forced me back into my old shoes. As I analyze the sources, I noticed that good portions were cut & pasted from other games and some of the portions were either hacked or disabled. I found a bug in that C&P code. In fact, I found ALL the bugs in a single debug session. Well, you guessed it. That buggy code was copied all over the place, and you could see the desparate attempts here and there to try to fix them. And each bug was fixed differently, as if there were different programmers assigned to those bugs. AAARRRGGGHHHH!!! It's the colorful screwdriver paradigm all over again. The pressure to deliver on time forces you to make stupid decisions and modern IDEs only make it very easy. It's called {--drums--} Cut & Paste. It's very convenient, but it's by far the BEST bug propagation tool ever developped!!
  5. cbenoi1

    Mind, Body, and Seoul

    I'm wrapping up 2 weeks of business in Korea and flying back home tomorrow. I had many meetings during KGDC and had a few hours to tour G*STAR (the korean equivalent to E3). Last time I had a free day and went visiting the DMZ; this time around I barely had the time to walk around the block. As usual, I indulge myself in the local traditional food early in the trip to slowly migrate back to NA food later on. Enough with BBQ pork, kimchi, ttok, chop-chop and green tea already. Tonight I want a burger, fries and a Coke. Yeah!! G*STAR was held at Kintex rather than at the COEX this year. The Kintex is a new convention center, somewhat larger than COEX. But Kintex is waaaaaay outside Seoul, in the middle of farming nowhereland and dangerously close to the northern border. And with the APEC summit this week, traffic was at its peak. The trip from the olympic stadium to our hotel located near Gimpo airport took 5 hours... It would probably be faster to drive south to Busan and take a plane back to Gimpo. Having a PSP or gaming phone handy (with an extra battery pack, mind you) during those cabby rides is worth its weight in gold...
  6. cbenoi1

    First entry

    Each time I meet Dave and Kevin, I always tell myself I should upgrade to GDNet+ but never got around to it. It's done now!! I just found out about web space on my account and given that my older Videotron account was shrinking my allocated web space, I took it upon myself to move software development stuff over here. --------------------------------- IOCP_UDP (http://members.gamedev.net/cbenoi1/iocp_udp.zip) This is an implementation of I/O Completion Port for UDP sockets. It's fairly efficient, but it's very basic. No message tracking and no reliability layer. Adding this functionality is still in the works. Feel free to use the source code as you see fit. R_1_5_0 (http://members.gamedev.net/cbenoi1/r_1_5_0.zip) This library is a DirectPlay / DirectVoice layer that abstracts all of the complex initialization and data exchange stuff into a neat package. It was originally designed for an RTS, so this is a mature library. Again, full source code if you want to play with it.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!