这一次更新的间隔是很漫长的。之前的教程得到很多朋友的支持,让我感到责任的沉重。一般说来,技术博客的文章通常是自己的学习笔记,但是作为一份被期望“零起步”的教程,我更多时候感到这份东西不仅仅是为我自己写的。
SDL库作为主要为游戏开发提供简单易用的支持的API,相信很多朋友学习它的目的,也是跟我一样,希望能做出自己梦想中的游戏吧。作为游戏,我始终相信一个观点:(网络)游戏,是以电脑和网络为媒介,人与人之前的交流。游戏是我们营造“共同经历”的一种方式。作为交流的主要工具,网络起着决定性的作用。所以,本着对网络这一部分的高度重视,我对SDL_net寄予厚望。
但是,现实是残酷的。我不可否认SDL_net已经对网络编程做了很好的封装,但是问题是,socket编程本身并不是件简单的事情。所以,实际上的情况是,仅仅靠学习SDL_net的函数库,也许我们根本不可能搞明白网络编程究竟是什么东东。必要的基础知识是必须学习的,我逐渐明白这一块我始终是不可能跳过去的。
既然必须要补上这一块的知识,在具体的实现平台上,我们必须做出选择。经过均衡,我还是选择从BSD socket入手。这不仅仅是因为BSD上的socket实现是最早的TCP/IP实现,是业内的事实标准;也是因为Win32 API实在是不能引起我的好感。
当然,我们不可否认Windows有他先进的地方。至少,在socket编程方面,基于线程而非Linux以进程为基础的核心结构,可以更加有效的控制线程,并且线程的调度也更加均匀。在Linux下,无论是fork还是pthread,在我看来其实还是比不上WinThread的。但是,这反过来似乎也可以说明,在Linux下这两个东西几乎已经“够用”了。况且,从原理上去学习和了解;去了解传统和习惯形成的原因,是有助于我们理解这些通常在学术派的C/C++教科书上不会涉及到的知识:进程,线程,流程控制,通讯,甚至包括操作系统的基本原理。在我看来,这些知识是实际使用电脑编写程序完全无法回避的内容,是一个实践者必须掌握的知识。学术界对于程序的一般定义就是:数据+算法。而在今天我们看来,多进程,多线程,socket通讯等等,已经完全改变了传统的编写程序的方式和思路。如果让我来定义,我觉得至少在前两者的基础上,还必须加上流程控制(包含了通讯的意思),这样才能算是当代计算机程序的完善定义。
第十四章的内容,估计会比较长,也会比较难。我会按照从socket到SDL_net的顺序去写,当然争取还是做到“零起步”的通俗易懂。这一部分,也会有一个单独的名字《Linux socket编程入门教程》。虽然是用Linux的名字,但是大家应该知道所有的Linux上TCP/IP的实现,甚至UNIX上的TCP/IP实现,基本上都是源于BSD的TCP/IP实现的,并且直到今天,这些实现都是相互源代码级兼容的。WinSock一般的说法也是源自socket,但是具体的函数会有不同。
接下来的知识对于我来说也是个很大的挑战。因为涉及的面太广了。想全部学完是不现实的,我们必须根据自己的需要,从这些知识中寻找出我们需要的部分,恩,努力吧!
posted on 2008-07-08 01:18
lf426 阅读(3425)
评论(5) 编辑 收藏 引用 所属分类:
SDL入门教程