All posts by Nayruden

Pleased with Daydream

The response I got with Daydream far exceeded my expectations! We now have four excellent developers onboard, myself included. We’ve been putting the rubber to the road and have been coming up with basic design documents for Daydream. This is tedious work for now, but well worth the time it will save us in the coming months.

Are you a modeler or texture artist looking to bolster your profile? Join Daydream and help us and your resume. We’re looking for all skill levels at this point.

Thank you all for your support, and watch this blog for various news about Daydream in the future. 🙂

Here’s some links for Daydream:

Website: http://daydreamonline.net (just redirects to forums right now)

Twitter updates: https://twitter.com/ProjectDaydream

Wiki: http://wiki.daydreamonline.net

Git repo: http://github.com/Nayruden/daydream

For those who may be interested, we’ve decided to use the LGPL license.

Project Daydream

Daydream has been a dream of mine (haha, get it?) for quite some time. It’s something that I believe is needed, but when I start looking at the time/effort needed to work on it, I usually run for the hills. I’ve compromised with myself in this regard, I do not expect to complete it. No matter how much I work on it or not, it will be worth the experience. I’ll take it nice and slow, baby steps the whole way. This is part of the reason I named it ‘Daydream’. If Garry Newman, whose math (see quaternion section) and programming skills never cease to amuse, can code something similar, I certainly can too.

So, what is it?

Daydream takes a page from Garry’s Mod‘s book, an open sandbox. It makes a good starting point for our explanation and most of the readers have experience in GMod, so we’ll list some of the major points of difference between Daydream and GMod below instead of starting from scratch.

  • Stability. This is the crux of what’s holding GMod back from wide public acceptence. Server owners simply have to expect a popular to crash roughly once an hour. If you don’t believe me, I’d happily get you in touch with some other server owners. GMod is built off HL2, which was simply not built to do what GMod is doing. It’s true that VALVe has put a lot of effort into supporting this, but it’s simply not enough. Daydream will have a high emphasis on making it as stable as humanly possible.
  • Cross-platform. Steam, which powers HL2 clients, does not support anything except windows. This does not hold true for servers, but Garry has repeatedly refused to support Linux. Our goal for Daydream is to have it run on Mac, Linux, and Windows. I have lots of experience programming on all the platforms except Mac, but now that I own a Mac, supporting it shouldn’t be a problem. 😉
  • FOSS (Free and Open Source Software). The community has been vital to GMod’s success, and the same would certainly be true of Daydream. What better way to do this than to have true community collaboration? I personally believe that the community is what would make or break Daydream. Making this open source also brings in the traditional benefits… more help with coding, greater bug visibility, easier to make modifications, etc.
  • Support for more players. Garry built GMod with exclusively single player in mind, telling people asking for multiplayer that they were essentially crazy. I have no idea if Garry still sticks by this design decision, but the impacts can be clearly seen. Garry is also relegated to the fact that Source cannot support more than 32/64 players on a server. One of Daydream’s long-term goals is to be essentially an MMO (similar to Second Life). This isn’t a feature that can happen overnight, and considerations for hardware must be made. Phsyics sandboxes are very intensive in memory and CPU.
  • More focus on learning. An online MMO physics sandbox is a great place to learn about the real world! What happens when a soccer ball is hit with a tornado? What’s the best way to light a wooden house on fire? Users should feel like they have nearly limitless possiblities while using Daydream.
  • Persistance. Disconnecting from a server shouldn’t be a death sentence. You should be able to bring your creations with you wherever you go, share them with others as you like (maybe even sell!). If someone’s created an awesome model (the building blocks of a sandbox game), they should be able to show the model to other people without intervention of the server owners (with reservations). Ideally (until Daydream is a true MMO), there would be some sort of cooperation between server hosts in order to store information about players.

Other features we want to implement:

  • In place script editor. You should be able to look at the scripts powering, for example, an ATV and change the behavior of the object on the fly. I want to be able to create a sphere, bring up the editor and see all relevant functions either stubbed out for me or easily dropped in the script, and make the sphere act like the the golden snitch from Harry Potter within a period of five minutes.
  • Clearly defined and standardized object I/O. If an object can move, other objects should be able to control this outside the script editor. IE, I should be able to create a button, give it a value of 0 when off and 255 when on, and hook it up to say, a cube, specifying acceleration along the z-axis or such. Then, when I press the button, the cube will shoot straight up into the air accelerating at 255 units/sec. This clean I/O interface allows even non-programmers to take full advantage of their surroundings in new and innovative ways.
  • Everything must be standardized, modular, and extensible. We realize that we’re a small team and relatively inexperienced. To counter this, everything should be as modular and extensible as possible so we can come along later and easily improve previous work. This also goes toward our MMO goal. We should litterally be able to replace the server software completely with as few changes to the clients as possible. Even if clients written in completely different languages were to join the server, this shouldn’t be a problem. I know this goal sounds lofty, but it is attainable.

An invitation for other developers:

If you are experienced in C++ or Lua, we’d like to have your help! Our development approach is very casual. So far the development team is made up of college students who are in this mostly to learn. We’re in no rush, we want to go slowly and make sure we get this right.

If this sounds like your type of project, please get in touch with me! Either leave a comment here, or email me, using megiddo AT (the address of this domain).

Technologies you should be willing to learn and become familiar with as a developer:

  • Ogre3d – This is our graphics engine
  • Git – Our source control (via github)
  • Lua – Our scripting language
  • SWIG – Our interface to Lua
  • Newton – Probably? We’re still toying around, PhysX seems to limited

An invitation for ideas:

Have an idea for this project? Leave it in the comments! We appreciate any feedback we can get at all.

Website for daydream:

Not much to look at yet, but it’s http://daydreamonlinet.net

Howto: Install Boot Camp 2.1 drivers on a new MacBook Pro using a Leopard install DVD

So you’re in Korea and you stupidly forgot your MacBook Pro install DVD that you need in order to install Boot Camp drivers, huh? Have no fear, as long as you can borrow a Leopard install DVD off someone, it’s possible to get everything working. The problem here is that even with the Leopard install DVD (at least in my case), the DVD has the Boot Camp 2.0 drivers which will give you a blue screen of death if you try to install it on the latest MacBook Pro revision.

Step 1: Copy the Boot Camp driver install files from the Leopard CD to your Boot Camp desktop.

Step 2: Find the Broadcom/wireless driver installer and delete it.

Step 3: Install the 2.0 firmware through Drivers\Apple\BootCamp.msi. It will automagically pass through the wireless driver installation with no BSoD. You’ll need to reboot after this install

Step 4: Now run the 2.1 update, found here: http://www.apple.com/support/downloads/bootcampupdate21forwindowsxp.html. Reboot.

Step 5: Enjoy!

Korea, Iowa, and Delta

Long time no post! Since my last post, it seemed I was lucky if I had enough time to breathe, let alone write a blog entry. But now I’m in Korea and should start having some more time on my hands.

I closed up shop with Rockwell Collins in Iowa, it was a summer well spent. I even got to shake hands with the CEO on the last day! That was pretty neat.

My flight to Korea had a connection in San Fransisco. Unfortunately, my Delta flight to SFO was an hour and a half late to the gate because they couldn’t get an open gate to dock with. It was a terrible feeling, sitting in the plane knowing that if I could get out of the plane and simply walk to the international terminal, I could make it on time. Instead, I missed the flight out and got delayed an entire day at SFO. They wouldn’t even pay for food or a hotel. Argh.

Korea’s pretty fascinating. They have a lot higher quality roads here than in the US. The town I’m nearby is huge in US standards, but small in Asian standards. I’ve been into town a couple times to go shopping or play games; I like visiting just to see how friendly and honest the people there are. Korea definitely has some big advantages compared to the states.

Everyone kept telling me that I’d hate the food here, and while I didn’t love it at first, I’ve found that I really like it now. It’s got a lot of flavor and it’s really healthy for you too. The kimchi is usually the spiciest thing they give you, but as long as you mix it with some rice it’s okay.

In other news, the website is back up after what’s probably been at least a month. Sorry about that. I’ll try posting some pictures from Korea soon as well.

If a monkey can row with a ladle

Work has been interesting. We’ve been trying to make an editor to visualize some massive data lying around in databases. Our solution to this problem until yesterday afternoon was to use GMF, but for the past two weeks we’ve been bogged down with the seemingly simple but important task of how to place a label.

So yesterday afternoon, with a mere month left before we have to present our project to the CEO of Rockwell Collins, we decided to scrap the GMF idea and go with yEd. This may sound like a risky business move at first… but by 10 AM this morning we had replicated all functionality we had with GMF plus a little bit more. Wow! It’s another open vs closed source argument, but in this case closed source is not only champion, but king.

Speaking of work, I got asked to participate in a mock interview today. My technical lead has been disappointed with their interviewees not being able to answer their questions recently, so they wanted to interview me and my fellow interns to try and set a baseline expectation. First they asked us to explain a UML diagram. It was a simple diagram but using some conventions that you never really see in the real world which could trip you up. Then they had us write the code for that UML diagram. Next, we wrote an implementation of a doubly-linked list. I got nervous here and did rather poorly (lots of bugs), but my lead was happy and said I still did better than the others they had do it. Finally they had us identify some obfuscated C++ code. It was a template that could be used to turn any class into a singleton simply by inheriting the template. It was pretty cool, but you definitely have to be up to date on your C++.

On a completely different topic, I bought a MacBook Pro a few days ago. I want to continue to reserve judgement for a while longer, but so far two things have me really ticked.

First, the dock: While it’s ‘nicer’ than a taskbar it’s essentially useless if you’re a developer who likes to have a lot of windows open all at the same time. The dock will only take you to the most recently used window of an application. If you want the other windows you need to cmd-tab (hard with lots of windows) or use Expose (easier than cmd-tab but still more annoying than windows taskbar).

The second thing that annoys me to no end is the inability to create a file from finder. Maybe they did this because they didn’t want to be like Windows and have a big box of different types of files you can create, but Mac should at least let me create an empty plain text file!

On the positive side, I’m enjoying how nearly everything you need to do (except for creating a file) takes less mouse/keyboard navigation than on Windows. Big timesaver there! Also I’ve become a big fan of the multi touch trackpad. I’m finding that between the two finger scroll and the two finger right click, I have no need for an external mouse at all.

Still thinking about what to do for my hosting. Don’t think I’ll keep my current one while in Korea, but I also hate to lose ’em (I’d never get something this nice at this price ever again).

EDIT: Slashdot had an article relevant to my interview discussion. Thought you might be interested.

Considerations

I’m starting to get myself mentally prepared for spending four months living in another country. It’s quite frightening! I have no idea how many of the comforts that are just common place to me here in the US will not be there in Korea. I will only be able to take two small suitcases with me, so I’m beginning to make lists of what I absolutely need during my stay. Also, I got to see a picture of one of the typical dorm rooms in Handong. All the rooms sleep four people.

Typical dorm at Handong -- Sleeps four!

Yes, this room sleeps four. And yes, that is a clothes line you see in the back. Apparently they don’t use dryers in Korea. Also I hear the mattresses are very slim and hard. Still, part of the reason why I want to go to Handong in the first place is to get out of my comfort zone, so I chalk this up as a win.

In other news, I’m living in a disaster area. No, really! Cedar Rapids, IA has been declared to be a federal disaster area. Lovely, isn’t it? The downtown is pretty much gone from flooding. Here’s some pictures for your enjoyment. Click a picture to see my commentary.

<lost the pictures due to technical issues, will try to put them back up at some point>

I’m thinking about switching my hosting services around. The host I have right now is *okay*, but not great. They no longer respond to anything but reset tickets. They never answer the phone and never reply to emails. Given that it’s a small company, I worry that they’ll go under any day now…

Anyways, I took a look at what kind of things I run on my server on a daily basis in order to compare alternatives. I’m paying $55/mo right now for a full dedicated on a gigabit link, 160 GB HDD, 2 TB bandwidth, P4 3.0 Ghz, 2 GB RAM. I use the server for the following:

  • Garrysmod server
  • Natural Selection server (probably not going to bother setting up another)
  • TeamSpeak (doesn’t see much use though)
  • Subversion repositories
  • LAMP
  • SSH server for secure proxies
  • I want to have an online backup

Alternative option #1 — Specialized hosting:

  • Go with DreamHost at $11/mo to take care of LAMP and SVN. Since it has SSH access, I assume it could do a SOCKS proxy, but I’d have to check on this. DreamHost, with 4 TB of traffic and 500 GB of storage, would make a good online backup.
  • I probably wouldn’t bother with a garrysmod server until I got back from Korea, but once I did I could go with a service like this one. Considering that they’re advertising ULX (my software!), I might even be able to get them to give me a discounted or free server. Assuming I couldn’t get a discount through them, it would be about $24/mo for 8 public slots.
  • The site above also has a somewhat good-looking teamspeak service, but otherwise I could go with this sort of service for $2.50/mo (5 slots, but that would probably be enough anyways).

So, ignoring setup fees (which you can usually talk them out of anyways) and the dumb discounts for contracts (Advertising $6/mo with a 10 year contract? Bad DreamHost!), this comes to a total of $37.50/mo. Which is still a whole lot better than what I’m paying now and I’d get better quality of service this way. Still, it’s a lot more inflexible.

Alternative option #2: VPS

  • Go with a VPS host like this one. This would host a TeamSpeak server, possibly a Natural Selection server, Subversion, LAMP, and SSH. $15/mo for ~300 MB RAM, 13 GB storage, and 500 GB bandwidth. No mention of CPU time though which is disconcerting.
  • The lack of storage above means I’d have to go with something like Amazing S3 for backups. I figure S3 would cost me about $5/mo.
  • I’ll use the $24/mo figure above for a Garrysmod server.

Ignoring setup fees, this comes to $44/mo. About $7/mo more than the first option, but gives me more power at the cost of having to manage everything myself. Plus the VPS kinda sucks to be honest. Touch choice!

Updates

I’m currently at an internship, living away from home, and enjoying it! It’s an interesting experience to be completely self-supported for a change. There’s no going back now, so I better enjoy it. 🙂

Unfortunately, I’m back in Windows right now. For whatever reason, I felt that I wasn’t able to do the work I needed to do in Linux. Probably my fault, I know. I wasn’t a big fan of KDE4 in Kubuntu 8.04. Just felt incomplete. Last, Linux desperately needs good Windows Mobile support; I tried using the app that’s available (forget what it was called now), and it was extremely difficult to setup and not very easy to use.

I’m in the market for a laptop right now, I’ll need to get a fairly powerful one to replace my desktop while I’m in Korea next semester. People keep recommending that I get a MacBook Pro, but it would pain me to buy the hardware from Apple that I can buy from Dell for $600 less. Even if you claim that the $600 gets “the best OS out there”, $600 is a whole lot of money for an OS.

I stumbled across ASciencePad today. Amazing application! I’ll definitely want to use it from school.

As far as my car in my last post, I got the window and the taillight fixed. The rest of the damage will just have to stay. I’ll be in Tornado alley in three years anyways for the foreseeable future, so probably best I don’t have a perfect car to get ruined there. 😛

Hail of DOOM!

I was minding my own business, studying in my dorm room when it suddenly decided to rain pool-ball sized hail. My car was out in the parking lot of course, suffering the thrashing from the hail. My car survived the battle, but suffers from a broken rear windshield, a broken taillight, and sizable dents.

Pictures of the battlefield:

10 days in linux

I’m finally able to use Kubuntu for an extended time! I told myself that I’d stay for as long as I could if linux started supporting my dual screen display (I spent hours previously with little to no luck on getting dual screen to work) and supported GMod above 800×600 resolution. It now does both! I have now used Kubuntu without booting into Windows once for 10 days. In order to share my joy with whoever may read this blog entry, I’ll share some tips I learned along my travels. 🙂

  1. Always use envy to install your drivers. For whatever reason, the default restricted installer doesn’t install a very good driver.
  2. Use “sudo apt-get build-dep wine” to get the dependencies for building wine. I like to compile wine from scratch, so this has come in handy.
  3. Use “uname -a” to get your current kernel version
  4. Did you display configuration go bonkers and now you can’t do anything? Use “dpkg-reconfigure -phigh xserver-xorg” to reset the config.
  5. Do you get a black screen on startup? Install package “startupmanager”, run it under sudo, change the resolution to something lower. You probably also want to enable text display in there,  comes in handy.

Last, not included on the list because it’s pretty random, you can output to sound using /dev/dsp. Ex, file > /dev/dsp will “play” a file through your soundcard. Pointless but cool.